10535|6

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

串口发送数据的时间 [复制链接]

用430串口发送数据给舵机,我们一个工作周期20ms,给舵机发送数据11个字节,波特率用9600

那么传送数据时间=11*8/9600=9.17ms

问题是,430的发送时间也是9.17ms么?在线路上的传送时间是9.17ms没错。

现在我理解的是:数据我是用循环中断的方式发送的。430的TXbuff是一个字节的,所以只能一个字节一个字节的发,在发送这11个字节的9.17ms期间,cpu干不了其他工作,只能串口发送数据吗?

如果是pc机串口发送11字节的话,由于电脑缓存大,11个字节准备好后就可以干其他的事了吗?9.17ms其他时间可以做其他工作。

最新回复

没看懂你的问题: 现在我理解的是:数据我是用循环中断的方式发送的。430的TXbuff是一个字节的,所以只能一个字节一个字节的发,在发送这11个字节的9.17ms期间,cpu干不了其他工作,只能串口发送数据吗? ——如果你使用的是硬件串口,那么只需要配置好串口并将需要发送的字节放进buff里就可以执行其他的程序了,单片机会自动发送你需要的内容。 ——如果你使用模拟串口,CPU也不是不能腾出来干其他活。串口发送每一位都需要维持一定的时间,这个维持时间里是不需要占用CPU资源的,完全可以腾出来干其他活,只要你资源调度得好,串口发送甚至于可以认为是“不耗资源”。 如果是pc机串口发送11字节的话,由于电脑缓存大,11个字节准备好后就可以干其他的事了吗?9.17ms其他时间可以做其他工作。 ——不是这么理解,同样是因为有相应的硬件设备,在发送的时候只要将内容写进相应的缓存里,就会自动逐个将数据发送出去。这个缓存可以是单字节的移位寄存器,也可以是DMA硬件控制的成片内存空间。如果缓存是单字节的,那么每发完一个字节就需要软件将下一个字节的内容填入寄存器。如果是DMA控制,就可以不需要软件处理,而是直接由硬件控制下一个发送的字节直到需要发送的内容完全处理完毕。 ——再说说串口中断,这个中断的作用楼上几位说得不准确,串口中断分为发送中断和接收中断。发送中断就是一个字节的内容完全通过串口发出去了产生的,作用是产生中断让你处理下一字节的发送。接收中断好理解一些,就是完整接收到一个字节的数据产生中断让你去处理。一般只有硬件外设才会产生相应的中断。 ——然后是查询法,我也没搞懂怎么使用查询法来处理串口发送。感觉是计数器法更合适一些,或者是查询法接收数据。如果你非得用CPU资源代替定时器来进行每个位发送时间的计量,那么没人能阻止得了你。你最好也别再提什么“CPU能不能腾出来”的问题。使用查询法接收数据比较常用到,由于你不知道数据会在什么时候到来,那么需要隔一段时间便查询一下寄存器(硬件串口)/IO口(模拟串口)来确认一下。这里还有个采样间隔的问题,只要你的设计满足采样定理,那么同样可以腾出CPU资源来干其他活。 最后,弱弱的问一句,舵机不是用PWM信号来控制吗?什么时候换成串口控制了...   详情 回复 发表于 2014-10-8 01:02
 
点赞 关注

回复
举报

1453

帖子

18

TA的资源

纯净的硅(高级)

沙发
 
可利用中断方式,应该不存在“在通信时干不了其它事情”的问题
 
个人签名http://weibo.com/u/1391449055
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

板凳
 
如果要提高CPU利用率,可以使用中断发送的方式呀。如果有DMA的话,推荐用DMA方式。
 
个人签名这孩子,成熟的象征,理智的典范。
 
 

回复

1万

帖子

139

TA的资源

版主

4
 
如果使用查询模式发送,那处理器就干不了别的事了,中断则没问题,注意理解“中断”的概念。
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

5
 
提高CPU效率是关键
















 
个人签名www.qmgfw.com集成墙面
www.315jcz.com集成灶
www.315dbw.com地板十大品牌
www.tmjcq.com集成墙面
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

6
 
使用串口中断进行发送,这样就不会一直占用CPU了。而且你的发送时间计算有误,串口要发送一个字节的数据,还要包括一个起始位和一个停止位,也就是一共要发送10bit,应该是11*10/9600,而且这个只是理论上最小时间,实际上两个字节之间有些时候间隔大于1个位的时间,只是一般可以忽略而已
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

7
 
没看懂你的问题:
现在我理解的是:数据我是用循环中断的方式发送的。430的TXbuff是一个字节的,所以只能一个字节一个字节的发,在发送这11个字节的9.17ms期间,cpu干不了其他工作,只能串口发送数据吗?

——如果你使用的是硬件串口,那么只需要配置好串口并将需要发送的字节放进buff里就可以执行其他的程序了,单片机会自动发送你需要的内容。
——如果你使用模拟串口,CPU也不是不能腾出来干其他活。串口发送每一位都需要维持一定的时间,这个维持时间里是不需要占用CPU资源的,完全可以腾出来干其他活,只要你资源调度得好,串口发送甚至于可以认为是“不耗资源”。

如果是pc机串口发送11字节的话,由于电脑缓存大,11个字节准备好后就可以干其他的事了吗?9.17ms其他时间可以做其他工作。

——不是这么理解,同样是因为有相应的硬件设备,在发送的时候只要将内容写进相应的缓存里,就会自动逐个将数据发送出去。这个缓存可以是单字节的移位寄存器,也可以是DMA硬件控制的成片内存空间。如果缓存是单字节的,那么每发完一个字节就需要软件将下一个字节的内容填入寄存器。如果是DMA控制,就可以不需要软件处理,而是直接由硬件控制下一个发送的字节直到需要发送的内容完全处理完毕。

——再说说串口中断,这个中断的作用楼上几位说得不准确,串口中断分为发送中断和接收中断。发送中断就是一个字节的内容完全通过串口发出去了产生的,作用是产生中断让你处理下一字节的发送。接收中断好理解一些,就是完整接收到一个字节的数据产生中断让你去处理。一般只有硬件外设才会产生相应的中断。
——然后是查询法,我也没搞懂怎么使用查询法来处理串口发送。感觉是计数器法更合适一些,或者是查询法接收数据。如果你非得用CPU资源代替定时器来进行每个位发送时间的计量,那么没人能阻止得了你。你最好也别再提什么“CPU能不能腾出来”的问题。使用查询法接收数据比较常用到,由于你不知道数据会在什么时候到来,那么需要隔一段时间便查询一下寄存器(硬件串口)/IO口(模拟串口)来确认一下。这里还有个采样间隔的问题,只要你的设计满足采样定理,那么同样可以腾出CPU资源来干其他活。

最后,弱弱的问一句,舵机不是用PWM信号来控制吗?什么时候换成串口控制了...
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表