关于cyt4bf spi性能

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

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

cross mob
kk211911
Level 3
Level 3
25 sign-ins First solution authored 25 replies posted

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

0 点赞
1 解答
Jimmy_L
Moderator
Moderator
Moderator
250 replies posted 250 sign-ins 50 solutions authored

你好,

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

在原帖中查看解决方案

0 点赞
5 回复数
Jimmy_L
Moderator
Moderator
Moderator
250 replies posted 250 sign-ins 50 solutions authored

你好,

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

0 点赞
kk211911
Level 3
Level 3
25 sign-ins First solution authored 25 replies posted

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

0 点赞
Jimmy_L
Moderator
Moderator
Moderator
250 replies posted 250 sign-ins 50 solutions authored

你好,

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

0 点赞
kk211911
Level 3
Level 3
25 sign-ins First solution authored 25 replies posted

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

0 点赞
Jimmy_L
Moderator
Moderator
Moderator
250 replies posted 250 sign-ins 50 solutions authored

你好,

支持的,详情可参考TRM。

0 点赞