
我们用STM32L431的SPI接口访问ISM330ISN. 设置了ISM330ISN的 数据ODR为6667Hz ,那么如果要把这每秒6667样本的数据 通过usart1传到上位机,怎么做到两个数据同步呢? 也就是对外也要6667Hz的数据刷新率。 目前是使用ISM330ISN的中断INT1作为同步信号,也就是ISM330ISN每准备好一组数据发送INT1中断,MCU收到后触发读操作,读取数据后发送到usart1 。 请问下int1可以这么用吗? 假设设置为6667Hz, 用串口调试助手实测 mcu发送出来的数据大约有200多Hz ,此时波特率设置为115200bps。 这部分应该怎么操作才能保证所有的振动传感器数据都发送到上位机呢? |
关于stm32l431rct6的LPTIM计数模式
STM32L476VGT6 100P的可以直接用stm32u575vg 100P的替换到板子上吗?为啥烧录程序时无法连接?
使用STM32L451CEU6型号的芯片,在用usart(PA9、PA10)进行串口通信时,发送0x55在PC端可以收到正确的数据,但是发送0x80会收到0x00的数据,发送0x01会收到0x7F的数据,串口助手的配置和CubeMX上的配置参数是一样的(都是115200,8N1),请问各位这个是什么原因呀?
两块SRAM分别位于不同的基地址,有什么方法可以使这两块区域SRAM当成一块使用
串口接收函数跑几天就进不去了
STM32L476 HAL_FLASHEx_Erase() 问题
SD卡格式化出错
STM32用户手册哪里下载 哪里有分类的
怎么将HAL库转为LL库。
为什么STM32L496RG第一次烧写程序后需要重新上下电才能正常执行程序?
这个系列内置了ISPU处理单元,所以就没有FIFO了,但是可以用这个DSP编程处理数据。
如果要输出数据,选择带FIFO的就比较好处理,时间足够。
另外通常应用(比如防抖....),最高数据ODR也就1k多就足够了。
我这边的应用是MCU需要在最大0.5ms内判断是否阈值超标 然后输出告警 同时输出6.667kHz 或者至少khz的振动原始数据。 另外ispu部分目前代码里没有用到。 想知道是否可以以ISM330 的对外中断int1作为节拍 按我的理解 ODR设定为6,667KHz时 对应就应该每秒有6.667k个int1脉冲,那么mcu收到这int后去读ism330的数据并转发。 不知道实际情况是否如此?有没有更好的方案
MCU与ism模块用spi接口,这部分时钟要设得高些,假如ism每次准备好数据,外部中断触发spi(mcu的spi做主机)发时钟把数据搬运到mcu的内存中,简单一点,spi用dma接收,等dma tc或者ht(用ht中断可以减少延时)就可以触发urat往上位机搬数据,假如6667个样本是32位数,那么一秒钟用uart(最好也要dma带fifo)搬运的比特数至少为6667x32x10(start+8+stop)= 2133440 bps,所以上位机的波特率至少要这个数,现在2.5Mbps的串口可以的,这样相当于上位机的数据总是落后ism中的数据一帧
按照你的要求,除非每秒的数据都超阈值,才需要每秒都上传。如果波特率不够大,开一个可以存好多数据的内存,暂存好几次超阈值的数据,慢点传。
6.667k的频率间隔就是149us 左右。 STM32L431既要接收中断,然后SPI读取数据,还要判断,然后再发送串口,都是软件来做,看起来时间应该不够处理完。
这个型号内置DSP,应该充分利用它来处理判断,当然有开发难度。
否则应该选带有FIFO的,这样读取数据就不需要那么快了。
是不是选用ISM330DH系列的就有FIFO 了 ? 我们板子上还有LIS2D12芯片,这个芯片有下图的阈值寄存器,是不是超阈值报警直接使用下面的寄存器就更快捷些? 我目前是读取ism330isn的加速度值后mcu再自己比大小 ,可能在0.5ms内来不及发送告警