今日头条
单片机与嵌入式的关系,单片机是嵌入式的子类
以前单片机包括的东西并不算多,两者的硬件区别较为明显,嵌入式系统是一个大类,单片机是其中一个重要的子类,嵌入式系统更像是一个完整的计算机,而单片机更像是一个没有外设的计算机,但是随着半导体技术的突飞猛进,现在各种硬件功能都能被做进单片机之中。所以嵌入式系统和单片机之间的硬件区别越来越小,分界线也越来越模糊。
单片机软件的约定一般指的是应用层的协议,这个主要是确定收发双方串行传送的数据到底代表什么含义,比如单片机和计算机进行通信,想通过计算机来控制电机的转速和控制电机的方向,要控制单片机再去控制继电器,下面有很多个继电器,还需要控制单片机去做一些数据的采集和处理,然后再回传给上位机,这个时候应该发送什么样的数据,那只有刚才的基本的通信约定是不可以的,软件层也要有一个通信的约定,这个就决定了收发双方传送数据的具体含义,比如上位机发送一就代表要启动一个电机,发送二就代表电机正转,发送三代表电机反转,发送四代表控制继电器,发送五代表控制一个led灯点亮或者熄灭,或者是去干其他的事情,要定义好一个协议,否则的话接收端接收到之后要去接收到这个数据之后要根据这个数据去做判断和处理。
一个主从通信的时候这个通讯协议更需要做一个具体的规定,要规定什么样的数据是地址,什么样的数据是命令,什么样的数据是具体的参数,具体的数据又包括多少个,如何做校验,这些东西都需要在这个应用层的通讯协议当中做好约定,两个协议一个是解决的通信,另外一个是解决通信的时候传输的到底是什么样的数据,这个数据是要干什么,把这两个理解清楚之后,一些程序的举例才比较容易理解,解决了通信还要解决通信的数据是要干什么,继电器可以去接不同的东西。
奇偶校验在发送数据的时候,会在数据位的后面尾随一个奇偶校验位,就是一帧数据当中的前面的是起始位,中间是八个数据位,数据位的后面如果说你要做奇偶校验的话就是一或者是0,数据位当中的1的个数和校验位1的个数的之和应该为奇数个,如果是偶校验,数据当中的这个1的个数和你这个校验位这个1的个数之和应该为偶数,这样的话在发送的时候如果已经确定好了奇校验还是偶校验,再接收字符的时候也要对这个1的各处进行校验,数据的传输出现了差错,可以让他重传一次,这样的话就是奇偶校验,主要是做数据通信的校验。
除了奇偶校验之外在软件层,也就是应用层的协议当中使用校验和CRC校验,奇偶校验实际上还是解决基本通信的时候帧格式当中的校验,在做一串数据的时候,比如要控制多路继电器,每块板子当中有多个继电器,这样的话要区分不同的板子就是主机和从机,要区分不同的从机要给不同的从机分配地址,然后要给不同的从机板子上继电器再来分配地址,还要控制给他传输命令,什么样的命令是启动,什么样的命令是关闭,这样就会有一串数据,由不同的帧就可以构成一串数据,一串数据当中可以用和校验和CRC校验来保证这一串数据传输的一个准确度。
和校验实际比较简单,发送方将所有的数据块求和,能够产生一个一字节的这个校验字,然后把他扶到数据块的末尾,一串数据有的代表是地址,有的代表是数据,有的代表是命令,最后可以加一个校验,这个就组成了这一串数据或者组成了一个数据块,这一个数据块一次性就会发着一串东西过来,把这一串数据接收过来之后也要对他进行校验,把前面接触的所有的数据块,除校验字节之外求和,求的这个和刚才发送过来的最后那一个数据库的校验字,把它接收过来之后来比较一下,看看他们是不是相符,如果相符就认为传输是正确,如果说是不相符就认为传输出错,要有这种出错的机制这个就是和校验。
CRC校验叫做循环冗余校验,这个是在通讯当中用的比较广泛的一种校验方式,CRC校验大家也不需要过多的去关心,因为CRC校验是一个比较标准的算法,有标准这种算法程序可以供我们去调用,不需要去深究,如果想了解CRC校验的话可以去查找相关的资料,如果需要对一串数据做CRC校验,可以借助小工具来做简单的测试,用串口助手发送的时候,可以借助CRC校验工具,51单片机串行口的结构非常的简单,使用也非常的简单,串口之所以难还是再难在它的应用上,简单的解决一个串行通信的问题,解决基本的数据的发送和接收这个是非常简单的,但是要想使用串口,尤其是大数据量的数据传输的时候,这个实际上还是比较复杂的,还是需要一定的经验才能够解决在通信当中出现了各种各样的问题,还有就是如果需要约定一些不同的这种通信协议的话,可能还是需要花一点时间的,仅仅是解决发一个数据这个是比较简单的。
对单片机感兴趣的可以查看往期分享内容,希望能帮助大家在学习单片机的路上少走一些弯路,想要入门单片机可以持续关注创为单片机编程,回复“带我学习”查看更多内容分享。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !