请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TDC7200 主题中讨论的其他器件:TDC1000、
工具/软件:TI-RTOS
我尝试使用 MSP432与 TDC1000和 TDC7200通信(两者都连接到同一 SPI 总线)。
读取/写入 TDC1000寄存器没有问题、但我对 TDC7200也没有成功。
加电时、我将使能引脚从低电平切换为高电平、然后将其保持为高电平。 输入时钟(8MHz)看起来正常、与 TDC1000相同。
我已经尝试过从100000Hz 到5MHz 的 SPI 频率。 我还尝试在传输之间切换 CS 引脚。
我不会读回我正在写入的内容、即使在初始读取时、我也不会获得默认复位值。 我只读回0x00。
以下是寄存器3上 SPI 事务的代码片段:
GPIO_WRITE (MSP_EXP432P401R_GPIO_9_0_TDC7200_CS、0); //GPIO_WRITE (MSP_EXP432P401R_GPIO_3_4_TDC1000_CS、0); usleep(10); masterTransaction.count = 2; masterTransaction.txBuf =(void *) masterTxBuffer; masterTransaction.rxBuf =(void *) masterRxBuffer; masterTxBuffer[0]= 0x43;//写入寄存器地址3. masterTxBuffer[1]= 0x07; /*启动 SPI 传输*/ transferOK = SPI_transfer (masterSpi、&masterTransaction); GPIO_WRITE (MSP_EXP432P401R_GPIO_9_0_TDC7200_CS、1); //GPIO_WRITE (MSP_EXP432P401R_GPIO_3_4_TDC1000_CS、1); usleep(10); GPIO_WRITE (MSP_EXP432P401R_GPIO_9_0_TDC7200_CS、0); //GPIO_WRITE (MSP_EXP432P401R_GPIO_3_4_TDC1000_CS、0); usleep(10); masterTransaction.count = 2; masterTransaction.txBuf =(void *) masterTxBuffer; masterTransaction.rxBuf =(void *) masterRxBuffer; masterTxBuffer[0]= 0x03;//读取 masterTxBuffer[1]= 0x00; /*启动 SPI 传输*/ transferOK = SPI_transfer (masterSpi、&masterTransaction); GPIO_WRITE (MSP_EXP432P401R_GPIO_9_0_TDC7200_CS、1); //GPIO_WRITE (MSP_EXP432P401R_GPIO_3_4_TDC1000_CS、1); usleep(10); if (transferOK){ /*打印主接收缓冲区的内容*/ Display_printf (display、0、0、"Master:[%u]=[%u][%u]\n"、masterTxBuffer[0]、masterRxBuffer[0]、masterRxBuffer[1]); } 否则{ display_printf (display、0、0、"主 SPI 传输失败"); }
感谢您的帮助!