Dec 07, 2022
11:38 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 07, 2022
11:38 PM
SDL中的Cy_SCB_SPI_Transfer是通过触发中断来完成传输的,这样在读取大量寄存器时会产生大量的中断影响性能,能否不需要触发spi中断来完成传输?比如直接写base->unTX_FIFO_WR.u32Register后,循环等待传输标志位清空?
Solved! Go to Solution.
1 Solution
Dec 08, 2022
12:10 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 08, 2022
12:10 AM
你好,
如果数据量很大,此时用while循环等待传输完成,如果此时有中断产生,可能会造成数据被overwrite或者丢失。中断是比较理想的方式,不明白为什么会造成读取大量寄存器会产生大量中断影响性能。你可以设置优先级来处理最需处理的事情。如果觉得数据传输不够迅速,还可以使用DMA传输。
5 Replies
Dec 08, 2022
12:10 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 08, 2022
12:10 AM
你好,
如果数据量很大,此时用while循环等待传输完成,如果此时有中断产生,可能会造成数据被overwrite或者丢失。中断是比较理想的方式,不明白为什么会造成读取大量寄存器会产生大量中断影响性能。你可以设置优先级来处理最需处理的事情。如果觉得数据传输不够迅速,还可以使用DMA传输。
Dec 08, 2022
12:42 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 08, 2022
12:42 AM
打个比方对spi-slave的采样频率为2000hz,每次采样需要读20个寄存器,那么每秒处理的spi中断会很多的。
Dec 08, 2022
01:09 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 08, 2022
01:09 AM
你好,
你是觉得处理中断多会占用太多CPU资源吗?那可以考虑使用DMA,DMA传输的时候是不占用CPU资源的。其实你可以测试一下,用中断传输会对你的应用产生什么影响,然后再考虑如何优化。
Dec 08, 2022
02:39 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 08, 2022
02:39 AM
spi支持polling模式吗,类似直接使用Cy_SCB_WriteTxFifo写完fifo之后,轮询unTX_FIFO_STATUS.u9USED来判断spi是否传输完成?
Dec 08, 2022
05:11 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 08, 2022
05:11 PM
你好,
支持的,详情可参考TRM。