工具/软件:TI-RTOS
我们通过 i2c 与 另一家制造商的演示板连接 。 该板在 i2c 总线中具有内部上拉电阻器、
我们使用示例 EK-TM4C129EXL -> i2ctmp006 作为 项目的基础,这非常简单 ,但无论 写入的字节数如何,函数 I2C_transfer 都会在写操作中返回错误。
在示波器上观察、第一个字节似乎在 i2c 总线中传输、然后该函数返回错误。
我们使用 EK-TM4C129EXL 板的 I2C8 i2c 接口 :
在"Board.h" 中:
#define Board_I2C_CRIPTO EK_TM4C129EXL_I2C8
在 EK-TM4C129EXL.c 中
CONST I2CTIVA_HWAttrs i2cTivaHWAttrs [EK_TM4C129EXL_I2CCOUNT ={
{
baseAddr = I2C2_base、
.intNum = INT_I2C2、
.intPriority =(~ 0)
}、
{
baseAddr = I2C8_BASE、
.intNum = INT_I2C8、
.intPriority =(~ 0)
}、
};
void EK_TM4C129EXL_initI2C (void)
{
/* I2C7初始化*/
/*
*注意:TI-RTOS 示例为 SSI2或 I2C7配置引脚 PD0和 PD1。 因此、
*同时使用 I2C 和 SPI 驱动程序时会发生冲突
*应用程序。 修改此文件中的引脚多路复用设置并解析
*运行应用程序前发生冲突。
*/
/*启用外设*/
SysCtlPeripheralEnable (SYSCTL_Periph_I2C7);
/*将相应的引脚设置为 I2C 而不是 GPIO。 */
GPIOPinConfigure (GPIO_PD0_I2C7SCL);
GPIOPinConfigure (GPIO_PD1_I2C7SDA);
GPIOPinTypeI2CSCL (GPIO_PORTD_BASE、GPIO_PIN_0);
GPIOPinTypeI2C (GPIO_PORTD_BASE、GPIO_PIN_1);
/* I2C8初始化*/
/*启用外设*/
SysCtlPeripheralEnable (SYSCTL_Periph_I2C8);
/*将相应的引脚配置为 I2C 而不是 GPIO。 */
GPIOPinConfigure (GPIO_PA2_I2C8SCL);
GPIOPinConfigure (GPIO_PA3_I2C8SDA);
GPIOPinTypeI2CSCL (GPIO_Porta_base、GPIO_PIN_2);
GPIOPinTypeI2C (GPIO_Porta_base、GPIO_PIN_3);
I2C_init ();
}
在示波器上、 第一 个字节被转接 并接收(i2c 地址) 来自接收器的 ACK (第9位)
我们不知道 I2C8中断是否正常工作。
您是否对问题的可能原因有任何了解?

