主题中讨论的其他器件:MSP430F5510、 MSP430WARE
您好!
我对 MSP430的使用比较陌生、而且也刚开始作为 C 语言编程人员。
我基于 MSP430F5510微控制器设计了定制板。 我已经成功启动了原型、并且能够初始化两个基于外部晶振的时钟(XT1为32、768 KHz、XT2为24.0000 MHz)。 当我启动这些振荡器时、代码在每种情况下返回"成功"。 我能够顺利操作 I/O 引脚。
以下是初始化时钟的代码:
void initclks (void){
//初始化时钟。
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P5、(GPIO_PIN4 + GPIO_PIN5));
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P5、(GPIO_PIN3 + GPIO_PIN2));
UCS_setExternalClockSource (32768、24000000);
blnStatus = UCS_TurnOnLFXT1WithTimeout (UCS_XT1_DRIVE_0、UCS_XCAP_3、10);
blnStatus = UCS_TurnOnXT2WithTimeout (UCS_XT1_DRIVE_3、10);
UCS_initClockSignal (UCS_MCLK、UCS_XT2CLK_select、UCS_Clock_divider);
UCS_initClockSignal (UCS_SMCLK、UCS_XT2CLK_select、UCS_Clock_divider);
UCS_initClockSignal (UCS_ACLK、UCS_XT1CLK_select、UCS_Clock_divider);
}
但是、我现在正在尝试与从器件地址为0x45的板载外设芯片建立 I2C 通信。 我阅读了一份名为"使用 I2C 主设备用法的示例"的文档。 这是一个非常有用的文档、展示了如何通过具有 DMA 和不具有 DMA 的 I2C 发送和接收数据。 我尝试在我的项目中实现此代码。 但是、这个代码似乎不适用于 MSP430F5x 系列。
然后、我尝试遵循 DriverLib 文档中的示例代码。
我有一个子例程尝试初始化 I2C 模块:
void initi2c (void){
//初始化 I2C 外设。
USCI_B_I2C_initMasterParam param ={0};
param.selectClockSource = USCI_B_I2C_CLOCKSOURCE_SMCLK;
param.i2cClk = UCS_getSMCLK ();
param.datarate = USCI_B_I2C_SET_DATA_RATE_400KBPS;
USCI_B_I2C_initMaster (USCI_B0_BASE、¶m);
}
然后、我尝试通过调用以下子例程向 I2C 外设发送一个字节:
void set_tw8833_data (uint16_t i2c_add、uint8_t i2c_data){
//设置 TW8833的基址。
USCI_B_I2C_setSlaveAddress (USCI_B0_BASE、0x45);
USCI_B_I2C_setMode (USCI_B0_BASE、USCI_B_I2C_Transmit 模式);
USCI_B_I2C_ENABLE (USCI_B0_BASE);
USCI_B_I2C_clearInterrupt (USCI_B0_BASE、USCI_B_I2C_STOP_INTERRUPT + USCI_B_I2C_Transmit _INTERRUPT);
while (1)
{
USCI_B_I2C_masterSendSingleByte (i2c_add、i2c_data);
while (USCI_B_I2C_BUS_BUS_BUSY);
}
}
当我监控 I2C 数据和时钟线路时。 。 。 不会发生任何情况。
有人可以推荐介绍如何使用 MSP430F5510与 I2C 外设建立通信的文档吗?
感谢你的帮助、
最大