我想测试数字接口(SPI) tw MCU/STMF411和81404。
确保 SPI 按预期工作的一种方法是从其中读取器件 ID。
根据数据表、读取寄存 器值需要两个通信周期、前提是 SPIC75寄存器中的 SDO-EN 位已置位、我就是这么做的。
以下是读取器件 ID 的代码:
a_SPI2_RxBuf[0] = 0; a_SPI2_RxBuf[1] = 0; a_SPI2_RxBuf[2] = 0; /* 1st cycle to send read command */ // Device ID Reg Address: 0x01; highest bit 1 for reading. a_SPI2_TxBuf[0] = 0x80 + 0x01; Dac81404_CS_Low(); ... // SPI DMA code to tx/rx 3 bytes Dac81404_CS_High(); /* 2nd cycle to receive */ Dac81404_CS_Low(); ... // SPI DMA code to tx/rx 3 bytes Dac81404_CS_High();
我的问题是3个接收字节不符合预期:应为 0x81、0x0A60 (0x0298 << 2)。
我得到的是:0x40、0x8538。
我的 SPI 代码运行良好、因为我很长时间以来一直设法使用它来改变电压输出。
我最近才想使用接收功能。