【嵌入式linux】zynq7010的SPI驱动调试、完善

最近在使用xilinx的zynq-7010开发、调试一个Lora模块,与模块进行spi通信时候出现linux应用层接收不到模块发回的数据问题。先排除硬件问题,通过逻辑分析仪可以抓到总线上有正常的收发数据波形,那问题只能是在CPU侧的软件上了。然后在linux的spi标准驱动的spi->rxbuf上增加debug打印信息,也没有收到数据打印出来,最终定位xilinx写的SPI主机驱动处理接收数据过程可能存在问题,没有将硬件上的数据及时传输到spi驱动核心层的buf中;找到spi主机驱动的中断处理函数,数据最终是通过中断发送到硬件和接收数据到fifo。

在dts通过compatible找到xilinx的spi主机驱动linux/drivers/spi/spi-cadence.c
在这里插入图片描述
找到收发数据的中断处理函数。
在这里插入图片描述

原驱动的中断处理发送、接收数据逻辑(因为SPI的IP内部本质是个移位寄存器,因此发送和接收是同时进行的,即要接收数据一定要发数据出去):触发spi中断->tx为空的中断(数据都发出去了)->判断已经发了多少个字节数据出去->从RXFIFO接收相同个数字节数据->数据传递给上层的rxbuf->若还有数据没发完(还有数据要接收)则继续将数据写入txfifo->重复上述过程。
一开始感觉这个数据处理的逻辑没问题,在总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值