我不能用我的头脑来解释为什么我无法与ADS122U04... 我尝试了Arduino和FTDI USB到TTL电缆,但芯片完全没有响应。 我只是想“ping”芯片来验证它是否存在,所以我尝试读取寄存器01h,传输55h,然后是22h,波特率为9600。 我知道我肯定是在向芯片传输,但没有什么回来。
有什么建议? 我是否在打开芯片电源和读取寄存器之间遗漏了一个步骤? 在我尝试与芯片通信的整个过程中,我确实将重置线路驱动到了高位,我确实尝试向它发送重置命令,但这没有帮助。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我不能用我的头脑来解释为什么我无法与ADS122U04... 我尝试了Arduino和FTDI USB到TTL电缆,但芯片完全没有响应。 我只是想“ping”芯片来验证它是否存在,所以我尝试读取寄存器01h,传输55h,然后是22h,波特率为9600。 我知道我肯定是在向芯片传输,但没有什么回来。
有什么建议? 我是否在打开芯片电源和读取寄存器之间遗漏了一个步骤? 在我尝试与芯片通信的整个过程中,我确实将重置线路驱动到了高位,我确实尝试向它发送重置命令,但这没有帮助。
您好,Doug,
很遗憾听到您的沟通仍有问题。 除了波特率之外,唯一严格的通信要求 是 重置引脚必须高,通信必须为8位,无奇偶校验和1个停止位。 要传输命令,必须按0x55 (0101 0101)执行命令。 您可以仔细检查以确保不会将其作为小数值55发送。 我找到的解决通信问题的最佳方法是使用逻辑分析器(例如Saleae)来验证我的计时和协议。 如今,这款工具相对便宜,而且在节省时间的故障排除方面,成本非常值得。 您会认为这样简单的事情会很容易,但并非如此。
/*
*从指定的地址读取注册表内容
*
\param Regnum标识要读取
的地址*/
char regRead (unsigned int Regnum)
{
UINT32_t ulDataTx;
uINT32_t ulDataRx;
UINT8_t垃圾邮件;
ulDataTx = REGRD_OPCODE_MASK +((Regnum & 0x07)<1);
while (UARTCharsAvail(UART_base))
{
垃圾邮件= UARTCharGet(UART_base);
}
while (UARTBusy(UARTCharPut(UART_base);
UARTCharPut(UART_base, 0x55)
ulDataTx);
ulDataRx = UARTCharGet(UART_base);
返回ulDataRx;
}
以上示例是 使用EVM和TIVA的寄存器读取函数。 这里没有什么特别的。 当事情变得复杂时,ADS122U04不是全双工,因此如果您在ADS122U04传输时尝试向其传输,设备将不会喜欢它。
此致,
Bob B