永发信息网

单片机通信协议怎么写

答案:1  悬赏:0  手机版
解决时间 2021-01-03 11:58
  • 提问者网友:鐵馬踏冰河
  • 2021-01-02 13:52
单片机通信协议怎么写
最佳答案
  • 五星知识达人网友:傲气稳了全场
  • 2021-01-02 14:38
问题一:单片机中所说的通信协议是什么? 单片机通信协议
现在大部分的仪器设备都要求能过通过上位机软件来操作,这样方便调试,利于操作。其中就涉及到通信的过程。在实际制作的几个设备中,笔者总结出了通信程序的通用写法,包括上位机端和下位机端等。
1.自定义数据通信协议
这里所说的数据协议是建立在物理层之上的通信数据包格式。所谓通信的物理层就是指我们通常所用到的RS232、RS485、红外、光纤、无线等等通信方式。在这个层面上,底层软件提供两个基本的操作函数:发送一个字节数据、接收一个字节数据。所有的数据协议全部建立在这两个操作方法之上。
通信中的数据往往以数据包的形式进行传送的,我们把这样的一个数据包称作为一帧数据。类似于网络通信中的TCPIP协议一般,比较可靠的通信协议往往包含有以下几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾。
帧头和帧尾用于数据包完整性的判别,通常选择一定长度的固定字节组成,要求是在整个数据链中判别数据包的误码率越低越好。减小固定字节数据的匹配机会,也就是说使帧头和帧尾的特征字节在整个数据链中能够匹配的机会最小。通常有两种做法,一、减小特征字节的匹配几率。二、增加特征字节的长度。通常选取第一种方法的情况是整个数据链路中罚数据不具有随即性,数据可预测,可以通过人为选择帧头和帧尾的特征字来避开,从而减小特征字节的匹配几率。使用第二种方法的情况更加通用,适合于数据随即的场合。通过增加特征字节的长度减小匹配几率,虽然不能够完全的避免匹配的情况,但可以使匹配几率大大减小,如果碰到匹配的情况也可以由校验码来进行检测,因此这种情况在绝大多说情况下比较可靠。
地址信息主要用于多机通信中,通过地址信息的不同来识别不同的通信终端。在一对多的通信系统中,可以只包含目的地址信息。同时包含源地址和目的地址则适用于多对多的通信系统。
数据类型、数据长度和数据块是主要的数据部分。数据类型可以标识后面紧接着的是命令还是数据。数据长度用于指示有效数据的个数。
校验码则用来检验数据的完整性和正确性。通常对数据类型、数据长度和数据块三个部分进行相关的运算得到。最简单的做法可是对数据段作累加和,复杂的也可以对数据进行CRC运算等等,可以根据运算速度、容错度等要求来选取。
2.上位机和下位机中的数据发送
物理通信层中提供了两个基本的操作函数,发送一个字节数据则为数据发送的基础。数据包的发送即把数据包中的左右字节按照顺序一个一个的发送数据而已。当然发送的方法也有不同。
在单片机系统中,比较常用的方法是直接调用串口发送单个字节数据的函数。这种方法的缺点是需要处理器在发送过程中全程参与,优点是所要发送的数据能够立即的出现在通信线路上,能够立即被接收端接收到。另外一种方法是采用中断发送的方式,所有需要发送的数据被送入一个缓冲区,利用发送中断将缓冲区中的数据发送出去。这种方法的优点是占用处理器资源小,但是可能出现需要发送的数据不能立即被发送的情况,不过这种时延相当的小。对于51系列单片机,比较倾向于采用直接发送的方式,采用中断发送的方式比较占用RAM资源,而且对比直接发送来说也没有太多的优点。以下是51系列单片机中发送单个字节的函数。
void SendByte(unsigned char ch)
{
SBUF = ch;
while(TI == 0);
TI = 0;
}
上位机中关于串口通信的方式也有多种,这种方式不是指数据有没有缓冲的问题,而是操作串口的方式不同,因为PC上数据发送基本上......余下全文>>问题二:单片机SPI通信协议是什么 用I2C通信的芯片最常用的就是EEPROM芯片,如Atmel的AT24CXX系列,此外,还有一些其它功能的芯片。用SPI通信的芯片有外置FLASH芯片,同样,还有其他功能的一些芯片。
I2C通信需要用到两个引脚:SDA SCL。SCL是时钟引脚,SDA是数据引脚。
SPI通信需要3个引脚或者4个引脚:CS SCK MOSI MISO。SPI通信芯片的引脚名称不一定都是这几个名称,可能还有会别的名称,但是意思是一样的,例如MOSI引脚的意思是“主机输出从机输入”,某个SPI接口的芯片就有可能会写成SDI,因为这个SPI器件是作为从机的,所以它的SDI的意思就是“从机数据输入引脚”。
SPI通信过程为:把CS引脚拉低,然后SCK输出时钟,然后就可以在MOSI引脚上输出数据,同时可以在MISO上获得数据了。
参考资料来源:吴鉴鹰吧
贡献文档:百度文库《吴鉴鹰单片机项目实战精讲》
单片机学习:吴鉴鹰单片机开发板(有详细的视频教程)问题三:关于单片机通信协议 肯定包括呀。问题四:单片机与PC机的232/485串行通信协议怎么写? 10分这种一主多从的还是用485比较好,具体的你可以找找modbus通信协议,参考那个来写,就是每个数据帧应该包括哪些位之类的。问题五:单片机通信协议有哪些 可以说:没有不同;也可以说:完全不同!网络通信协议和单片机通信协议都是协议,也就是在通讯过程中,都需要这个标准,需要按照这样的格式传输数据。记住,所谓协议,就是要求你传输数据用的格式,有一些格式是你自己定义的,有的为了兼容,就是通用,就用一些标准协议,比如TCP/IP协议。定义某个协议,就是要满足你的通讯要求,没有太复杂的概念。问题六:51单片机485通讯协议怎么写 有代码最好 所谓通讯协议 只是一种约定,如果都是 自己做的系统,只要自己定制一个就可以了,
如果与 其它 系统 通讯 ,则需要 知道 其通讯协议内容,
如 一个简单的 通讯协议 控制指令
唬 发送 01H 代表 打开开关
发送 02H 代表 关闭开关
则 发送端 发了 01H 接收端 收到 01H 就控制 打开开关
发送端 发了 02H 接收端 收到 02H 就控制 关闭开关
这感觉很简单,在实际应用中 要 考虑 正确性 需要验证,
如红外遥控器 指令码与反码 接收端判断 指令码与反码比较是否正确。问题七:我想请教一下大神们,上位机软件怎么和单片机进行通信,通讯协议怎么写?新手上路,还请大家多多帮助。 你可以在单片机先将数据转化为ASCII就是字符型,然后再发送给上位机显示。
一般上位机是ascii显示的吧问题八:单片机,自己写的通信协议,怎么传递位? “但是有个问题,不利于分层编程,我写的程序,我知道哪个变量的哪个位是做什么的,别人不清楚,”这只能怪你的变量命名有问题。
结构体+位域命名,足以很清楚地描述出特定位/位域的功能了。
标准化的操作系统,无数的变量/标志位,读者可以很流畅地一路看下来而不必老去查定义。所以说程序的清晰易读是很需要功夫的。问题九:51单片机485通讯协议怎么写 有代码最好 485通讯跟232通讯很相似,只是485是半双工的,需要加上方向控制问题十:单片机知道通信协议如何通信 哈哈 知道通信协议就好办了1 按通信协议设计单片机的通讯接口。
2 按通信协议设计单片机的通讯程序,分配读写数据的个数和数据类型。
3 按通信协议设计上位机的应用软件。光说不行 光想也不行 还是赶快自己动手开始做吧 做的过程遇到问题 可以大家帮你解决
如果感到满意 请选择:满意回答
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯