我的orangepi型号是zero puls2,全志H5。我使用spidev对ads1118进行驱动,其中有不少坑,在此记录。

spi1.1与spi1.0

板子上的系统是armbian。其中支持开启boot参数有spidev以及spi-add-cs。一开始我当然就直接都添加了,生成的设备节点为spi1.1。但是当我使用spidev_test去测试ads1118时却永远只能读取到0x00。

后来我尝试自己拉低cs。所以就取消了spi-add-cs参数。生成的设备节点为spi1.0。但是当我手动拉低cs再去读取数据还是读取不到。后来我尝试直接读取数据发现终于读取到了!

spi mode

当成功读取数据后,一般肯定是先读取设备id,检查设备id有没有读取错误。按照ads1118的手册上,使用spimode1进行读写。

但是根据我测试发现,使用这个spidev驱动。只能设置spimode2才可以正确的写入和读出数据!

但是!在我第三次测试的时候,又只有使用spimode1才可以正确读写。实在令人摸不着头脑。

配置ads1118寄存器

根据手册提供的串行接口通信时序。需要配置寄存器并且读取寄存器的参数时,必须连续发送32位数据。当数据转换开始后,发送16位数据配置寄存器是无法回读成功的。