记录一次,RK3568调试SPI不回复数据问题

最近工作需要使用到一个加密芯片。与3568使用SPI进行通信,后期会使用厂家的应用服务程序。因此,只是做数据收发验证一下硬件连接问题。

最初的时候,由于没有拿到厂家给的驱动程序。因此,决定使用平台自带的SPI驱动,基于spidev.c文件。

硬件原理图上连接的是SPI0_M0,片选0。

设备树内容如下:

通过指定红框中数字,可以影响到/dev/spidev0.x  设备文件的名字,其中x的值会与红框中的数字一致。

通过访问在/dev/spdev0.0设备文件节点,发送固定数据到加密芯片,会收到芯片返回的数据。

后来,收到厂家的驱动后,移植此驱动程序。发现数据不返回。

于是准备使用逻辑分析仪来抓取波形。由于是第一次使用,在这里就把逻辑分析仪的使用方式具体化一些。

首先,在原子官网下载逻辑分析仪应用软件。里面也有一个使用手册教程。

硬件接法和与示波器相接类似。需要接到对应芯片引脚上。然后配置软件此处选择了0~4 五个通道。

可以在此处选择SPI协议,点击编辑,可以将对应的通道编辑为SPI的线序

编辑好以后选择确定,同时,对应的硬件线序也要接到对应的通道上。

左侧,选择开始触发采集的方式,如下图。为通道0(此处配置为SPI的片选),电平发生变化,开始触发信号采集。

然后点击右测上面的开始采集按钮即可。然后,在板卡上运行和加密芯片SPI通信的程序。得到了如图所示的:

根据上图,可以看到,数据是我所发送的数据。但是数据是多次传输的(片选信号被多次下拉),而非一次传输。而后面并没有在MISO总线上看到回复的数据。

经分析,对方驱动程序在发送数据是,会将片选拉低。

spi_write函数会调用到SPI控制器驱动注册的发送数据函数,而在SPI控制器驱动中,也配置了片选信号,即发送数据时,SPI控制器,也会再次将片选信号拉低,再拉高。就导致了上述现象发生。

最后,经过测试发现将设备树中,SPI控制配置部分关于片选的信息去掉,即会默认使用软件来控制片选信号。最后设备树如下图所示:

再次使用逻辑分析仪抓取数据,结果如下图所示:

可以看到,片选信号只发生了一次变化。数据也被正确的返回发送。

这次调试的结论就是,SPI通信,当通过设备驱动软件来控制片选,即在设备树中指定了片选信号时,需要将控制器驱动中关于片选的信息去掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值