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.
您好!
我是 ANant 团队的本科生卫星建设团队的一员。 我们将 MSP430F5529用作我们电力系统的微控制器。 我正在编写一个代码、将电流传感器(TI 的 INA219)与 MCU 连接。 在向 INA219发送多个字节时、我使用了轮询方法、其中代码在将新数据加载到 TX 缓冲区之前等待 TXIFG 被置位。
我遇到的问题是从未设置 TXIFG、因此我的代码卡在 while 环路中。 尽管启用和清除了发送中断、我还是遇到了这个问题。 我已附上以下代码片段。 是否有解决方案?
是的、我 使用的是 Adafruit 的分线板。 我真的很抱歉,刚才没有提到这一点。
您说的对、我没有编写 ISR。
禁用中断是否会解决问题?
我是否在某个位置遗漏了 clearInterrupt()语句?
此外、本(https://cdn-learn.adafruit.com/downloads/pdf/adafruit-ina219-current-sensor-breakout.pdf?timestamp=1555244505)文档未提及上拉电阻器。
很抱歉耽误你的时间。
我将在第一个 while 循环中停止,即 sendMultiByteStart()之后的 while 循环,我 也对这些函数的确切工作方式有疑问。 h 文件中的描述表明 multibytesendnext ()
继续从主器件到从器件的多字节传输。
主模块使用此函数继续多字节传输的每个字节。 此函数执行以下操作:-发送多字节传输到从机的每个数据字节
baseAddress | 是 I2C 主机模块的基地址。 |
txData | 是要发送的下一个数据字节 |
修改 了 UCBxTXBUF 寄存器的位。
但是、要进行事务、数据必须位于移位寄存器中、对吧?
此外、我还检查了您在它停留在 while 循环中时指定的寄存器的内容、以及它之前的内容。 这就是我 得到的:
第107行
在 while 循环中:
我有几个疑问:
IE 为零。(我按照 您的指示禁用了中断。)
IFG 寄存器始终保持为零。
STAT 在0x10、这意味着总线忙? 为什么? 即使在我发送第一个字节之前、它也是0x10。
在 while 环路中、CTL1寄存器更改为0x92。 这意味着它正在传输一个停止条件。 你是对的,我确实得到了一个否定,但我仍然无法弄清原因。
为什么看不到 TXBUF 寄存器的值变化?
TIA
Parth。