您尚未登录。

楼主 # 昨天 09:04:48

dancells
会员
注册时间: 2023-11-05
已发帖子: 6
积分: 6

F1C200S SPI 是不是有硬件bug呀

在 linux 中使用spi发现,传输过程中,会引发linux命令行卡顿。

查看中断计数发现,传输一次1600字节数据(1MHz),cpu 居然收到了1680多次中断。然后在驱动中,每个中断类型中加一个计数,传输前清零,传输完成后打印,发现 1600字节数据,RX_RDY 中断触发了1570多次,其余两个中断正常:TC 1次, TX_READY 约为 1600 / TX_TRIG_LEVEL 次。

最后我直接使用 devmem 手动写寄存器进行测试,发现 RX_RDY 中断始终在 RF_CNT >= 1 就触发,已配置 RX_TRIG_LEVEL = 0x30。

手动测试流程:

  1. 写 Bus Clock Gating Register 0、Bus Software Reset Register 0 打开时钟、解复位。

  2. 配置 SPI FIFO Control Register 中 RF_TEST、RX_TRIG_LEVEL

  3. 清除中断 SPI Interrupt Status Register

  4. 手动写 SPI RX Data Register,1字节数据

  5. 查看中断状态 SPI Interrupt Status Register,发现 RF_CNT 被触发,读 SPI FIFO Status Register 能看到 RF_CNT 为1。

最近编辑记录 dancells (昨天 09:52:06)

离线

#1 昨天 18:30:20

zzm24
会员
注册时间: 2018-05-07
已发帖子: 128
积分: 90

Re: F1C200S SPI 是不是有硬件bug呀

f1c200s新kernel spi是可以直接开DMA的,靠本身spi fifo那几个字节中断肯定次数多了.

离线

楼主 #2 昨天 20:59:04

dancells
会员
注册时间: 2023-11-05
已发帖子: 6
积分: 6

Re: F1C200S SPI 是不是有硬件bug呀

zzm24 说:

f1c200s新kernel spi是可以直接开DMA的,靠本身spi fifo那几个字节中断肯定次数多了.

理论上中断次数是:发送字节数 / Watermark_level,但是目前的现象是约为1字节1中断。那我把主线的合入我现在的内核用dma吧,感谢。

或者我可以试试只用TX的同时处理RX

离线

#4 昨天 22:53:53

陆苹果
会员
注册时间: 2026-05-27
已发帖子: 18
积分: 18

Re: F1C200S SPI 是不是有硬件bug呀

补充一句:先用正常回环排除 RF_TEST 误判,再读回 FCR 确认水位。若仍一字节一中断,才考虑硅片/驱动兼容问题;工程上优先 DMA,或只开 TX 中断顺手 drain RX。

离线

楼主 #5 昨天 23:14:35

dancells
会员
注册时间: 2023-11-05
已发帖子: 6
积分: 6

Re: F1C200S SPI 是不是有硬件bug呀

陆苹果 说:

补充一句:先用正常回环排除 RF_TEST 误判,再读回 FCR 确认水位。若仍一字节一中断,才考虑硅片/驱动兼容问题;工程上优先 DMA,或只开 TX 中断顺手 drain RX。

纯写寄存器的方式测了一遍,也是一字节一中断。我先只开 TX 中断顺手 drain RX了,目前命令行卡顿缓解了。正在把主线的dma代码搬进来。感谢解答 big_smile

离线

#6 昨天 23:20:12

陆苹果
会员
注册时间: 2026-05-27
已发帖子: 18
积分: 18

Re: F1C200S SPI 是不是有硬件bug呀

关键别看RF_TEST,抓正常回环:读回FCR、关RX_RDY只看TC/TF、统计RF_CNT。若仍1字节1中断,再判驱动兼容或硅片问题,量产优先DMA。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发