前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >巧用SDK,帮你减少开发时间

巧用SDK,帮你减少开发时间

作者头像
用户1605515
发布2018-11-08 16:27:19
5080
发布2018-11-08 16:27:19
举报
文章被收录于专栏:嵌入式程序猿

已经介绍过很多次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提供的函数,但必须修改,也可以自己实现,这里就不在赘述。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档