这期内容当中小编将会给大家带来有关如何巧用SDK减少开发时间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
已经介绍过很多次NXP的SDK在开发中的应用,但多是基于KV系列和K系列的芯片,最近一个小项目用的是Kinetis KE02系列,该系列已经在SDK中支持,如果对SDK熟悉的话,会很容易上手,遗憾的是SDK都不支持Modbus通讯,而Modbus通讯底层最重要的就是对帧结尾t3.5和字节间隔t1.5的检测,而SDK提供了定时器的驱动,所以还是很容易实现,例如我们假定用定时器1来做modbus的两个时间检测,那么就可以配置如下
定义配置定时器结构体,初始化定时器,而定时器定时的装载值跟波特率有关,那么这个时间是怎么算的呢,已经在公众号讲过很多次了,不知道小伙伴门还记得吗?Modbus每一个字节分为启动位,停止位,校验位,数据位,如果配置为没有校验位,那么需用1位停止位占位,保持每一字节有11位,所以t3.5就可以计算出来,t3.5应该为11*3.5/波特率,而t1.5应为11*1.5/波特率,为了节省硬件定时器资源,使用一个定时器同时来检测t1.5和t3.5,那么两者的公约数就是t0.5,所以开一个定时0.5个字节的定时器,进三次就是t1.5时间到,进7次就是t3.5时间到,置检测标志。而SDK中定时器的周期设置函数参数是微秒对应的cycle,所以t0.5转换成微妙就是上图中的变量u32UartTimer_Slave = (1000000u * 11u * 5u) / (config_Slave.baudRate_Bps * 10u)
配置完定时器周期值后还需要使能定时器中断,使能定时器,但是这时候不能启动定时器。需要在UART中断中去操作定时器。
定时器中断中去检测帧标志,首先清中断标志,调用SDK的请标志函数。
Modbus通信中另一个重要的UART中断可以采用SDK提供的函数,但必须修改,也可以自己实现。
上述就是小编为大家分享的如何巧用SDK减少开发时间了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。