完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
中断产生信号量
void IQR_DRDY(void *args) { rt_sem_release(rx_sem); //产生信号量(释放信号量) } 线程获取信号量 while(1){ if(rt_sem_take(rx_sem, RT_WAItiNG_FOREVER)==RT_EOK){ ... } } 但是这种方法的传输速率最大只有1.2M/s左右,但我需要的传输速率最高要到达1.6M/s左右,有优化方法吗,或者采用其它方法 |
|
相关推荐
4个回答
|
|
你确信mq是信号量吗?
需要获取的数据 SPI时钟多少,用了DMA没有?这样可以算出最大理论带宽。 当中断到处理的延迟是多少?每次处理的耗时是多少? 再根据实际速度算出利用率,最好用逻辑分析仪看下,有具体数据才能分析改进。 优化方向 提高SPI频率,使用DMA降低传输间隔。 提高单次传递长度 提高中断响应速度 |
|
|
|
贴错了,mq是消息队列,不过信号量也是用一样的处理
spi时钟是8M/s,没有用dma。 中断处理用的是外部中断,应该够快。 主要是我在中断这里产生的信号量,切到线程处理的时间我不清楚,前端的采样率是2Ksps/s,也就是说有0.5ms的间隔给我工作,但我用线程+信号量的方法只能正常的处理1ksps/s的采样率 |
|
|
|
spi时钟是8M/s,没有用dma。
SPI时钟8Mhz?这样理论最大带宽也才1MB/s啊, 不用DMA的话,每个字节之间还有间隔,根本达不到你说的1.2M/s左右,能有个几百KB就不错了,除非是64Mhz=8MB。 前端的采样率是2Ksps/s 每秒2K次中断还是相对容易实现的,先测出所有要的数据,再整体分析改进下吧。 |
|
|
|
因为我一个总线上挂载着四块芯片,所以理论上应该乘以4倍,即为4m/s
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
590 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2241 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1233 浏览 0 评论
1788 浏览 0 评论
1464 浏览 0 评论
74797 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:17 , Processed in 0.809760 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号