Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

TRAVEO™ T2G Forum Discussions

kk211911
Level 2
Level 2
10 replies posted 10 sign-ins 5 sign-ins

SDL中的Cy_SCB_SPI_Transfer是通过触发中断来完成传输的,这样在读取大量寄存器时会产生大量的中断影响性能,能否不需要触发spi中断来完成传输?比如直接写base->unTX_FIFO_WR.u32Register后,循环等待传输标志位清空?

0 Likes
1 Solution
Jimmy-Liu
Moderator
Moderator
Moderator
First like received 100 sign-ins 50 replies posted

你好,

如果数据量很大,此时用while循环等待传输完成,如果此时有中断产生,可能会造成数据被overwrite或者丢失。中断是比较理想的方式,不明白为什么会造成读取大量寄存器会产生大量中断影响性能。你可以设置优先级来处理最需处理的事情。如果觉得数据传输不够迅速,还可以使用DMA传输。

View solution in original post

0 Likes
5 Replies
Jimmy-Liu
Moderator
Moderator
Moderator
First like received 100 sign-ins 50 replies posted

你好,

如果数据量很大,此时用while循环等待传输完成,如果此时有中断产生,可能会造成数据被overwrite或者丢失。中断是比较理想的方式,不明白为什么会造成读取大量寄存器会产生大量中断影响性能。你可以设置优先级来处理最需处理的事情。如果觉得数据传输不够迅速,还可以使用DMA传输。

0 Likes
kk211911
Level 2
Level 2
10 replies posted 10 sign-ins 5 sign-ins

打个比方对spi-slave的采样频率为2000hz,每次采样需要读20个寄存器,那么每秒处理的spi中断会很多的。

0 Likes
Jimmy-Liu
Moderator
Moderator
Moderator
First like received 100 sign-ins 50 replies posted

你好,

你是觉得处理中断多会占用太多CPU资源吗?那可以考虑使用DMA,DMA传输的时候是不占用CPU资源的。其实你可以测试一下,用中断传输会对你的应用产生什么影响,然后再考虑如何优化。

0 Likes
kk211911
Level 2
Level 2
10 replies posted 10 sign-ins 5 sign-ins

spi支持polling模式吗,类似直接使用Cy_SCB_WriteTxFifo写完fifo之后,轮询unTX_FIFO_STATUS.u9USED来判断spi是否传输完成?

0 Likes
Jimmy-Liu
Moderator
Moderator
Moderator
First like received 100 sign-ins 50 replies posted

你好,

支持的,详情可参考TRM。

0 Likes