MCU通信协议FIFO实现的方法.docx
《MCU通信协议FIFO实现的方法.docx》由会员分享,可在线阅读,更多相关《MCU通信协议FIFO实现的方法.docx(11页珍藏版)》请在第壹文秘上搜索。
1、MCU通信利用FIFO可以避免因数据量大而去包的问题.今天通过一种自定义通讯办议格式,给大家讲述,下实现F1.Fo的方法.1概述在此之前,先来列举一下传统串口数据收发的不足之处:每接收一个字节数据.产生一次接收中断“不能有效的利用串口便件F1.FO减少中断次数。应答数据采用等待发送的方法由于中行数据传输的时间远远跟不上CPU的处埋时间,等恃串口发送完当希字节再发送下一字节会造成CPU资源浪也,不利于系统整体响应(在1200bps下.发送一字节大约需要IOms.如果一次发送几十个字节数据,CPU会长时间处于等恃状态),应答数据采用中断发送增加个中断源增加系统的中断次数.这会影响系统整体稳定性(从
2、可常性角度考虑,中断K件应越少也好),计对上述的不足之处,构结合一个常用自定义通讯协议,提供一个完整的解决方案.2,1.FIFO11FIFO可以理解为率口专用的缓存,该缓存果用先进先出方式.数据接收FIFO和数据发送FIFO通常是独立的两个硬件.小口接收的数据,先放入接也FIFOI*,当FIFO中的数据达到触发值(通常触发值为1、2,4、8、14字节或者FIFo中的数据虽然没有达到设定值但是一段时间(通常为3.5个字符传辎时间)没有再接收到数据,则通知CPU产生接收中断:发送的数据要先写入发送FIFO.只要发送FIFO未空,硬件会自动发送FIFO中的数据。写入发送FIFO的字节个数受FIFOW
3、大深度影响,通常一次写入最多允许16字节.上述列举的数据跟具体的硬件有关,CPU类型不同,特性也不尽相同,使用前应参考相应的数据手册.3、数据接收与打包FIFO可以援存申口接收到的数据,因此我们可以利用FIFO来减少中断次她以NXP的IpCI778芯片为例,接收F1.Fo的触发级别可以设置为1、2、4,8,M字节,推荐使用8字节或者14字节,这也是PC申口接收F1.Fo的默认伯。这样,当接收到大Ift数据时每8个字节或者14个字节才会产生一次中断(最后一次接收除外),相比接收一个字节即产生一个中断,这种方法串口接收中断次数大大犍少.将接攻FIFO设置为8或者14字节也十分简单,还是以Ipc1.
4、778为例,只需要设置UARTFIFO控制寄存器UnFCR即可.接收的数据要符合通讯协议现定,数据与协议是密不可分的.通常我们需要将接收到的数据根据孙议打包成帧,然后交由上层处理。下面介绍一个自定义的协议帧格式,并给出一个通用打包成帧的方法.自定义协议格式如图3-1所示.幡IW命令长校葡.,1验帧首;通常是35个OXFF或者OXEE地址号:要进行通讯的设爵的地址编号,1字节命令号;对应不同的功能,1字节长度:数据区域的字节个数.1字节数据:与具体的命令号有关数据区长度可以为整个帧的长度不应超过256字节校裟:弁或和校验(1字节)或/CRCI6校验(2字节),本例使用CRC1.6校验下面介绍如何
5、将接收到的数据按照图3-1所示的格式打包成一帧.3.1 定义数据结构typedefstructUint8_t”dst-buf;指向接收缓存u1.nt8jsfd;帕首标忐,为OxFF或者OxEEuint8-tsfd-f1.ag;找到帧首,一般是35个FF或EEu1.nt8jsfd-count;帧首的个数,僦3T个Uint8_treceived_1.en;已经接收的字节数Uint8find_fram_f1.ag;找到完整帧后,置1uit8-tframe_1.en;本帧数据总长度,这个区域是可选的f1.nd.frame.struct;3.2 初始化数化结构,般放在小11初始化中/* brief初始化
6、寻找帧的数据结构,Paramp_fine_frame:指向打包帧数据结构体变琐 paramdsJbuf:指向帧缓冲区 Paramsfd:帧首标志一般为OxFF或者OxEE /voidin1.t_find_frame_struct(find_frame_structp_find_frame,uint8_t4dst-buf,unt8-tsfd)p.find-frame-dst-,buf三dstbuf;p_find_frame-sfd三sfd;p-find-frame-find-fram-f1.ag=O;p_find_frame-frameJen=IO;p-find-frame-receivedje
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCU 通信协议 FIFO 实现 方法