TI论坛
直播中

李华

8年用户 1439经验值
私信 关注
[问答]

用FPGA做16位4通道AD芯片ads1147的驱动编程,但是和ads1147的通信始终不对,为什么?


  • 大家好!这几天一直在用FPGAti 的16位4通道AD芯片ads1147的驱动编程,搞了差不多1周时间,但是和ads1147的通信始终不对!通信协议是SPI的,我做了如下一些工作:
    1向ads1147 发送0x20 00 ff 3个字节,采用sclk上升沿发送,下降沿读寄存器数据。
    2在上诉期间,一直保持CS为低,START 为高。
    3上电延时16毫秒,复位后延时0.6MS,这些都是按手册来的。
    SPI时序按照datasheet中做的


    我读的是MUX0寄存器,复位后应为01h,但现在读出始终为0,我觉得写20h,00h,ffh要用上升沿,读数据要用下降沿,这个地方很关键,不知我用的对不对?我用的是verilog 编程,因为手头没有示波器,所以只是用串口助手调试。有没有高手指点一下,实在搞 不出来了!非常感谢!

回帖(2)

王琰

2024-12-5 16:01:13
象这种全0 的情况,  有可能是硬件问题, 比如芯片还没有上电, 复位了, 供电异常等问题先检查一下
举报

小黑羊

2024-12-5 18:04:19
根据您的描述,您已经按照ADS1147的数据手册进行了一些基本的配置和通信尝试。以下是一些建议和可能的原因,以帮助您解决问题:

1. 检查硬件连接:确保您的FPGA与ADS1147之间的SPI接口连接正确,包括CS、SCLK、DIN、DOUT和START引脚。检查是否有短路或断路的情况。

2. 检查SPI时序:确保您的SPI时序与ADS1147的数据手册中的要求相匹配。特别是,检查您的SCLK频率是否在允许的范围内(ADS1147的最大SCLK频率为1MHz)。

3. 检查寄存器地址:您提到您正在读取MUX0寄存器,但是读出的数据始终为0。请确保您发送的寄存器地址是正确的。根据您的描述,您发送的地址是0x20 00 ff,这应该是正确的。但是,您可以尝试读取其他寄存器,以确定问题是否仅限于MUX0寄存器。

4. 检查CS和START信号:您提到在通信期间一直保持CS为低,START为高。请确保这两个信号在正确的时间被拉高和拉低。特别是,确保在发送和接收数据时,CS信号保持低电平。

5. 检查FPGA代码:请仔细检查您的FPGA代码,确保您正确地实现了SPI通信协议。特别是,检查您的代码是否正确地处理了SCLK上升沿和下降沿的发送和接收数据。

6. 使用示波器:如果可能的话,使用示波器检查SPI接口的信号,以确保时序和信号电平正确。这可以帮助您确定问题是否出在硬件连接、FPGA代码还是ADS1147本身。

7. 尝试其他通信方式:如果问题仍然存在,您可以尝试使用I2C通信方式与ADS1147进行通信,以排除SPI通信问题。

希望这些建议能帮助您找到问题的原因并解决通信问题。祝您好运!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分