工具/软件:TI-RTOS
您好!
我正在为 MSP430F5659控制器使用基于 TI RTOS 的应用、我的设计中有2条 I2C 总线
即
I2CUSCIB1 -用于 EEPROM/Temp IC
I2CUSCIB2 -用于串行至并行开关 IC
我正在使用以下代码来初始化 I2C 句柄,
I2CUSCIB_Object i2cUSCIBObjects[MSP_MSP430F5659_I2CCOUNT;
CONST I2CUSCIB_HWAttrs i2cUSCIIBHWAttrs[MSP_MSP430F5659_I2CCOUNT ={
{
baseAddr = USCI_B1_base、
时钟源= USCI_B_I2C_CLOCKSOURCE_SMCLK
}、
{
baseAddr = USCI_B2_base、
时钟源= USCI_B_I2C_CLOCKSOURCE_SMCLK
}
};
const I2C_Config I2C_CONFIG[]={
{
.fxnTablePtr =&I2CUSCIB_fxnTable、
.object =&i2cUSCIBObjects[0]、
hwAttrs =&i2cUSCIBHWAttrs[0]
}、
{
.fxnTablePtr =&I2CUSCIB_fxnTable、
.object =&i2cUSCIBObjects[1]、
hwAttrs =&i2cUSCIBHWAttrs[1]
}
};
/*
*==== MSP_MSP430F5659_initI2C ===
*
void MSP_MSP430F5659_initI2C (void)
{
/*
*注意:TI-RTOS 示例将 USCIB0配置为 SPI 或 I2C。 因此、
*在中同时使用 I2C 和 SPI 驱动程序时会发生冲突
*应用程序。 修改此文件中的引脚多路复用设置并解析
*运行应用程序前发生冲突。
*
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P8、
GPIO_PIN5 | GPIO_PIN6);
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P9、
GPIO_PIN5 | GPIO_PIN6);
I2C_init();
}
这是处理2条 I2C 总线的正确方法吗?
我想知道这在处理应用程序时是否会造成任何问题。
如果有任何其他方式处理 I2C 例程、请为我提供指导。
我之前有一条具有多路复用功能的单总线 I2CUSCIB1,它工作正常,现在我再添加一条总线 I2CUSCIB2。
提前感谢
Nitesh
I2CUSCIB_Object i2cUSCIBObjects[MSP_MSP430F5659_I2CCOUNT;
//#ifdef EEPROM
CONST I2CUSCIB_HWAttrs i2cUSCIIBHWAttrs[MSP_MSP430F5659_I2CCOUNT ={
{
baseAddr = USCI_B1_base、
时钟源= USCI_B_I2C_CLOCKSOURCE_SMCLK
}、
//{
//.baseAddr = USCI_B2_base、
//.clockSource = USCI_B_I2C_CLOCKSOURCE_SMCLK
//}
};
const I2C_Config I2C_CONFIG[]={
{
.fxnTablePtr =&I2CUSCIB_fxnTable、
.object =&i2cUSCIBObjects[0]、
hwAttrs =&i2cUSCIBHWAttrs[0]
}、
//{
//.fxnTablePtr =&I2CUSCIB_fxnTable,
//.object =&i2cUSCIBObjects[1],
//.hwAttrs =&i2cUSCIBHWAttrs[1]
//}
};
/*
*==== MSP_MSP430F5659_initI2C ===
*
void MSP_MSP430F5659_initI2C (void)
{
/*
*注意:TI-RTOS 示例将 USCIB0配置为 SPI 或 I2C。 因此、
*在中同时使用 I2C 和 SPI 驱动程序时会发生冲突
*应用程序。 修改此文件中的引脚多路复用设置并解析
*运行应用程序前发生冲突。
*
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P8、
GPIO_PIN5 | GPIO_PIN6);
//
// GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P9、
// GPIO_PIN5 | GPIO_PIN6);
I2C_init();
}