我在Raspberry Pi 3b上使用Waveshare A/D板。 该主板包含ADS156 A/D芯片。 我正在使用Broadcom C库在Python中编写驱动程序代码,并绑定到Python。 这不是软件问题。
此库没有明确的SPI_WRITE函数,而是具有SPI_TRANSFER函数。 调用此函数时,它断言CS并在MOSI上为8但值输出时钟(ads1256 DIN),同时从miso (ads1256 DOUT)中读取数据,从而从从属设备读取8位数据。
我认为这是读取数据(单次拍摄模式)所需的操作: 从ads1256 (参考数据表中的图30)读取数据时,我等待DRDY降低,然后向MOSI (DIN)写入RDATA命令,并读取返回的数据,即字节1,即MS字节。 然后,我执行两个附加SPI事务,将返回的数据读取为中间字节和LS字节。
所以我的问题是,这些额外的交易也会将数据发送到MOSI。 我应该发送什么数据? 我应该发送RDATA (0x01),0xff,0x00吗? 不能不发送任何内容。
我认为,SPI驱动程序中不具有只读函数的问题很常见,因此ads1256必须能够忽略这些写入,但这是推测。
您对此问题有何想法?