为了缩小问题的范围,我们集中研究了一个数据,IEEE格式的4字节浮点,alarm1Setpoint。 使用IAR调试器和断点,我们最初知道,如果在启动时从main.c调用函数,或从HMI编辑lcd.c调用函数,则在I2C模式下使用TI UART的写入/读取函数可以在此浮点中正常工作。 我们的问题是,如果在HART主控文件中进行编辑后,从文件HARTCMDS.C调用这些相同的函数,则写入和读取函数似乎都失败。 我们已验证发送的参数是否正确(浮点和无符号int numBytes)。
我们正在向Microchip 24FC1025 EEPROM写入数据或从其写入数据。
进一步的测试表明,当从hart调用写入函数时,执行永远不会进入ISR。 当我们从hart调用读取函数时,ISR不会发送发送发送要读取的地址的写入部分,但读取尝试使用ISR读取4个字节。 但是,可能是因为未发送地址,所以我们总是为字节读取0xFF。
我已经检查并将#defines添加到hart文件中,以便它与main.c相同,但没有帮助。 由于TI I2C UART的最大波特率为400k,因此我们将波特率减慢至30.7692万。 无帮助。
使用逻辑分析器,我们可以看到,在 写入失败期间,当时钟和数据短暂突发时,写保护线会很低,然后突然结束。 根据调试程序,我们不知道当执行不进入ISR时,clk和数据来自何处?
请您为我们提出一个前进的方向。
感谢您的参与,
Mike Raines
Hoffer Flow Controls,Inc.
252-202-0894
One0.01万@gmail.com