TI论坛
直播中

张丽

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

使用TLV5625在主函数里面的FOR循环中对两通道赋值,一个通道不能更新数据是怎么回事?


  • 问题:我在使用TLV5625时出现如下问题,在主函数里面的FOR循环中对两通道赋值,2通道DA可以正常更新输出,但是同样的语句放到定时器中断中,只有一个通道正常,另一个通道不能更新数据,请指教,谢谢。程序如下:
    CS=0;
      if(Spi_TxReady()==1) //发送准备已就绪
      {
         SpiaRegs.SPITXBUF=0x1A00; //OUTB发送数据
      }
      while(Spi_TxReady()==0);
       CS=1;
       delay(10);
       CS=0;
    if(Spi_TxReady()==1)
            {
          SpiaRegs.SPITXBUF=0x8A00; //OUTA发送数据
      }
         while(Spi_TxReady()==0);
      CS=1;

回帖(2)

王一凡

2025-1-8 10:55:11
 看程序没有什么问题.
会不会是定时中断的速率太高了, 导致来不及响应?
其它地方影响了时序, 比如干扰了 CS 信号?
举报

李波

2025-1-9 18:02:41
根据您的描述,问题可能出现在定时器中断中对TLV5625的操作。以下是一些可能的原因和解决方案:

1. 定时器中断优先级问题:如果定时器中断的优先级高于主函数中的FOR循环,可能会导致主函数中的FOR循环无法正常执行。您可以尝试调整中断优先级,确保主函数中的FOR循环可以正常执行。

2. 定时器中断触发频率过高:如果定时器中断触发频率过高,可能会导致TLV5625无法正常处理数据。您可以尝试降低定时器中断触发频率,以确保TLV5625有足够的时间处理数据。

3. 定时器中断中的代码问题:请检查定时器中断中的代码,确保没有语法错误或逻辑错误。如果可能,请提供定时器中断中的代码,以便进一步分析。

4. TLV5625的配置问题:请检查TLV5625的配置,确保两个通道都已正确配置。如果可能,请提供TLV5625的配置代码,以便进一步分析。

5. 硬件问题:如果以上方法都无法解决问题,可能是硬件问题。请检查TLV5625和相关硬件连接是否正确,以及是否有损坏。

建议您首先检查定时器中断中的代码和TLV5625的配置,然后尝试调整中断优先级和触发频率。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

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