传感器不停地发送多个数据,单片机接受的问题

2019-08-17 07:00发布

原子哥,我最近自己在做一些要玩意儿,现在遇到一个问题,求指导!

我用串口给传感器发送命令,查询当前的一些信息,传感器接收到这个信息后,会给我发送4个字节的信息(HEX),传感器是连续发送的,我中断函数会不会来不及接受啊?
我做了一下几个试验:
1.我用串口调试助手,来充当传感器,也就是单片机和上位机相连,然后用JTAG在线调试,单片机发出了命令,然后我用串口调试助手模拟发出相应的4个字节,此时我是发送一个字节,然后按F10,单步执行的。执行完第一个接受中断服务函数后,再发下一个字节,一共发了4个,符合我的要求
我一下子在串口调试助手上写了四个字节,然后点击发送,只能进入中断服务函数一次,就跟仅仅发第一个字节的效果一样,单片机只接收到一个字节,这是为什么?
2.我用串口调试助手和传感器相连,给传感器发送命令,传感器给串口调试助手一下子出来了四个字节,为什么会是一下出来四个呢?这说明传感器是连续发送返回数据,如果用串口调试助手一定能跟得上,如果用mini STM32能不能跟得上?
我是这样想的啊,如果波特率是9600的话,差不多一个位0.1ms,0.1ms能对于STM32来讲时间还是比较长的,只要中断服务函数不是特别长,就没事。


附:
我之前用串口调试助手代替传感器,与单片机相连,然后用传感器代替单片机和串口调试助手相连,这两个试验的结果就如上面所说,我用单片机和传感器相连时,居然得不到数据,波特率设置没有问题啊

感谢原子哥莅临指导!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
immydestiny
1楼-- · 2019-08-20 11:01
聚东风 发表于 2017-6-14 16:46
最简单粗暴的方式,传感器的时钟是谁给的?如果是MCU控制那还不简单啊,如果不是,那让MCU时钟速度远大于传感 ...

传感器用软件IIC  传感器Data
on the I2C-bus can be transferred at a rate up to 100 kbit/s in
the standard-mode, or up to 400 kbit/s in the fast-mode
我软件IIC设置的GPIO速度是25-100Mhz ,  传感器是数字输出,一秒能输出2000个,而我一秒需要采集250 个数,用串口的时候,显示接收字节数超级快。
我没太明白您说的意思
聚东风
2楼-- · 2019-08-20 12:30
immydestiny 发表于 2017-6-14 17:26
传感器用软件IIC  传感器Data
on the I2C-bus can be transferred at a rate up to 100 kbit/s in
the  ...

一秒需要采集250 个数,这么慢..
immydestiny
3楼-- · 2019-08-20 16:18
聚东风 发表于 2017-6-15 07:31
一秒需要采集250 个数,这么慢..

500个也行,可是传感器自己的采样率是2000Kz,太快,我设置了延时,串口接收字节数还是很快,读到的数都是初始值
聚东风
4楼-- · 2019-08-20 17:07
 精彩回答 2  元偷偷看……
聚东风
5楼-- · 2019-08-20 19:04
immydestiny 发表于 2017-6-15 08:53
500个也行,可是传感器自己的采样率是2000Kz,太快,我设置了延时,串口接收字节数还是很快,读到的数都是 ...

发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续

假设它真的自顾自的发,你看网上不也都有让它屈服的办法吗?




immydestiny
6楼-- · 2019-08-20 21:45
聚东风 发表于 2017-6-15 11:21
SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总 ...

非常感谢,我试一下

一周热门 更多>