嵌入式技术论坛
直播中

杨福林

7年用户 1534经验值
私信 关注
[问答]

线程与串口中断的的问题求解

我创建了两个线程:

一个线程负责采集数据, 没有延时, 一直占用cpu
另一个是modbus收发线程, 串口创建了接收中断

设想的是: 采集线程不断采集数据, 当串口接收到数据时, 串口中断发送信号, modbus线程从采集线程哪里抢来cpu, 然后处理数据发送回去, 然后挂起线程等待信号.

串口初始化在modbus线程里做的, 调用的是rtt的函数, modbus线程优先级比采集线程高.

现在的问题是, 只要采集线程一启动, 串口接收中断就不会触发.

我想了解下这里的机制, 是不是线程切换时也把中断停掉了, 还是有什么其他原因.

回帖(5)

张国厚

2023-1-11 14:47:39
硬件结构是怎样的?要求采样率是多少?
一般都是定时器+DMA来配合,想想示波器那么高的采样率难道他是CPU一直转吗?
举报

杨福林

2023-1-11 14:47:49
adc芯片采集, 单片机用spi通信, 4us采集一次, 但凡在采集线程里加一点延时就丢采集, 要求要采集到50kHz的波峰值.
我也想问一下示波器的原理, 我现在以为示波器这么高的采集率是不是用了FPGA+A核芯片.
举报

张国厚

2023-1-11 14:47:59
SPI这边由DMA去驱动不就行了?
如果必须要特定IO操作来配合满足时序,只能说这个硬件设计得不合理。
另外50K采样也不算高,MCU内置的ADC都能搞定吧?
举报

杨福林

2023-1-11 14:48:07
怎么再提高采样速度, ADC芯片标了采样是300k的, 但是我把spi采样方式换成只读的(以前用的是AT32写的spi读取方式)等各种提升速度的方法, 能读到值, 但都是乱值, 能稳定采集到正确值的时间就卡在4us, spi读取还有什么要注意的吗(adc芯片: tpafe516)
举报

张国厚

2023-1-11 14:48:16
可以上逻辑分析仪看看,不过先解决当前的问题吧,问题搞定后再考虑怎么提高。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分