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.

[参考译文] EK-TM4C1294XL:TM4C1294xl 的 I2C IO 扩展器问题

Guru**** 2482105 points
Other Parts Discussed in Thread: ENERGIA

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/715593/ek-tm4c1294xl-i2c-io-expander-problem-with-tm4c1294xl

器件型号:EK-TM4C1294XL
主题中讨论的其他器件:Energia

大家好,我们遇到了问题。  

我们正在使用 PCA9698 - NXP 半导体进行 IO 扩展。 我们使用 Energia v18来满足要求。 我们遇到了有关循环的问题。 我只是想控制引脚已准备好进行 i2c 通信。 这就是我使用 LED 进行控制的原因。 我们只得到两次逻辑'One'两次逻辑'zere',之后 LED 保持在逻辑1。 它们正在退出 LOOP 或其他内容。 我无法解决这个问题。 一段时间后,它们始终保持逻辑“1”。  

我正在使用 XiO 库。 显示了我的代码。 您不需要查看我使用的是哪种。 主要问题是 i2c 无法开始工作或无法稳定工作。 我尝试了很多方法来解决问题,但我无法找到问题所在或问题所在。

/*************
标题:爱荷华缩放工程 I2C-XiO (PCA9698) Arduino 示例
作者:Nathan D. Holmes 
文件: $ID:$
许可证:GNU 通用公共许可证 v3*/

#include 
#include 

XiO XioBoard;

void setup()
{
pinMode (PN_2、OUTPUT);
pinMode (PJ_0、OUTPUT);
digitalWrite (PN_2、 低电平);
digitalWrite (PJ_0、高电平);


//以9600 bps 初始化串行通信:
Serial.begin(9600);
Serial.println ("Hello\n");
Wire.setModule(0);//Start i2c
Wire.begin();
//以下两个初始化示例均假定
I2C-XiO 上的地址跳线 A0、A1和 A2 //设置为高电平(打开、无跳线)。 如果有设置为低电平(跳线),请
//在“Begy()”调用中将相应的配置值替换为“低电平”

//如果使用标准的爱荷华缩放屏蔽将 I2C 线连接到 Arduino,
///IORST 线可能连接到数字 IO 线4,/oen 连接到数字 IO 线3。
//使用下面的初始化程序。
//(AD0、AD1、AD2、RESET_PIN、output_enable_PIN)
Serial.println ("XiO started");
//如果 I2C 电缆上的/IORST 和/oen 线路未连接到任何位置,请使用此初始化程序
//而不是上面的初始化程序。
// xioBoard.begin(HIGH,高,高,-1,-1);
}


void loop()
{

xioBoard.begin(LOW、low、low、pj_0、pn_2);

//通过
执行以下操作可以更快地完成引脚配置(因为//使用单个 I2C 总线事务):
XioBoard.XioPinModeCached (Xio_PIN_A0、输出);
XioBoard.XioPinModeCached (Xio_PIN_A1、输出);
XioBoard.XioPinModeCached (Xio_A2、Xio_A2) 输出);
xioBoard.xioPinModeCached (Xio_PIN_A3、输出);
xioBoard.xioPinModeCached (Xio_PIN_A4、输出);
xioBoard.xioPinModeCached (Xio_PIN_A5、 输出);
xioBoard.xioPinModeCached (Xio_PIN_A6、输出);
xioBoard.xioPinModeCached (Xio_PIN_A7、输出);

XioBoard.XioPinModeCached (Xio_PIN_B0、输出);XioBoard.XioPinModeCached
(Xio_PIN_B1、输出);
XioBoard.XioPinModeCached (Xio_PIN_B2、 输出);
xioBoard.xioPinModeCached (Xio_PIN_B3、输出);
xioBoard.xioPinModeCached (Xio_PIN_B4、输出);
xioBoard.xioPinModeCached (Xio_PIN_B5、 输出);
oBoard.xioPinModeCached (Xio_PIN_B6、输出);xioBoard.xioPinModeCached
(Xio_PIN_B7、输出);

xioBoard.xioPinModeCached (Xio_PIN_C0、 Output);
xioBoard.xioPinModeCached (Xio_PIN_C1、output);
xioBoard.xioPinModeCached (Xio_PIN_C2、output);
xioBoard.xioPinModeCached (Xio_PIN_C3、输出);
xioBoard.xioPinModeCached (Xio_PIN_C4、输出);
xioBoard.xioPinModeCached (Xio_PIN_C5、 输出);
xioBoard.xioPinModeCached (Xio_PIN_C6、输出);
xioBoard.xioPinModeCached (Xio_PIN_C7、输出);

xioBoard.xioPinModeCached (Xio_PIN_D0、 Output);
xioBoard.xioPinModeCached (Xio_PIN_D1、output);
xioBoard.xioPinModeCached (Xio_PIN_D2、output);
xioBoard.xioPinModeCached (Xio_PIN_D3、输出);
xioBoard.xioPinModeCached (Xio_PIN_D4、输出);
xioBoard.xioPinModeCached (Xio_PIN_D5、 输出);
xioBoard.xioPinModeCached (Xio_PIN_D6、输出);
xioBoard.xioPinModeCached (Xio_PIN_D7、输出);

XioBoard.XioPinModeCached (Xio_PIN_E0、输出);XioBoard.XioPinModeCached
(Xio_PIN_E1、输出);
XioBoard.XioPinModeCached (Xio_PIN_E2、 输出);
xioBoard.xioPinModeCached (Xio_PIN_E3、输出);
xioBoard.xioPinModeCached (Xio_PIN_E4、输出);
xioBoard.xioPinModeCached (Xio_PIN_E5、 输出);
xioBoard.xioPinModeCached (Xio_PIN_E6、输出);
xioBoard.xioPinModeCached (Xio_PIN_E7、输出);


xioBoard.refreshPinModes();

//这些命令使引脚 A0上的输出闪烁-尝试通过电阻器连接 LED!
xioBoard.xioDigitalWriteCached (Xio_PIN_A0、low);//它指 U1集成引脚 IO1_0
xioBoard.xioDigitalWriteCached (Xio_PIN_A1、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A2、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A3、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A4、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A5、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A6、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A7、高电平);

xioBoard.xioDigitalWriteCached (Xio_PIN_B0、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B1、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B2、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B3、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B4、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B5、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B6、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B7、高电平);

xioBoard.xioDigitalWriteCached (Xio_PIN_C0、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C1、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C2、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C3、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C4、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C5、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C6、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C7、高电平);

xioBoard.xioDigitalWriteCached (Xio_PIN_D0、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D1、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D2、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D3、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D4、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D5、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D6、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D7、高电平);

xioBoard.xioDigitalWriteCached (Xio_PIN_E0、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E1、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E2、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E3、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E4、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E5、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E6、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E7、高电平);
xioBoard.refreshio();
serial.print ("循环 a\n");
延迟(1000);


xioBoard.xioDigitalWriteCached (Xio_PIN_A0、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A1、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A2、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A3、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A4、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A5、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A6、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_A7、低电平);

xioBoard.xioDigitalWriteCached (Xio_PIN_B0、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B1、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B2、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B3、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B4、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B5、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B6、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_B7、低电平);

xioBoard.xioDigitalWriteCached (Xio_PIN_C0、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C1、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C2、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C3、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C4、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C5、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C6、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_C7、低电平);

xioBoard.xioDigitalWriteCached (Xio_PIN_D0、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D1、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D2、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D3、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D4、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D5、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D6、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_D7、低电平);

xioBoard.xioDigitalWriteCached (Xio_PIN_E0、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E1、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E2、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E3、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E4、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E5、低电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E6、高电平);
xioBoard.xioDigitalWriteCached (Xio_PIN_E7、低电平);
xioBoard.refreshio();
serial.print ("循环 B\n");
延迟(1000);


} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    通常、我们不支持 Energia 问题。 请参阅此常见问题 解答 e2e.ti.com/.../695568中的项目#5

    如果您有逻辑分析仪、则可以捕获 LaunchPad 和 IO 扩展器之间的通信。 检查 LaunchPad 侧是否在一个循环后继续发送命令并接收来自 IO 扩展器的确认。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有人问-"代码编写器(付费)是否按代码行收费?"