大家好、我使用 EVM430FR6047开发了应用" MSP430FR6047EVM_USS_EVM" Water_Demo。 想法是通过 I2C 协议从 MSP430向我的 Arduino 板发送数据。 但是、当我在主源代码中实现 I2C 函数时、EVM430FR6047板和 USS (超声波传感设计中心)软件之间的连接会断开。 这是否是因为板通过 I2C 与计算机通信而使用 I2C 的问题?
根据我从数据表中看到的、这个评估板有两个 I2C 外设、我认为这可以解决这个问题。有什么方法可以解决这个问题吗? 现在、我也将为您提供我的代码。 如果这是使用 I2C 的问题,并且在不中断与 USS 的通信的情况下不能使用 I2C 进行数据发送,那么它是否能与 UART 一起工作? 感谢你的帮助。 (注释掉 UART 协议)
空 main (void)
{
WDTCTL = WDTPW + WDTHOLD;
/* EUSCI_A_UART_initParam uartParams ={
.selectClockSource = UCSSEL_2、// SMCLK 作为时钟源
.msborLsbFirst = 0、// MSB 优先
numberofStopBits = 0、// 1个停止位
.patity = EUSCI_A_UART_NO_CHECKI、//不进行奇偶校验
.clockPrescalar = 104、//波特率控制
.firstModReg = 1、//第一个调制阶段
.secondModReg = 0、//第二个调制阶段
.OVERSAMPLING = 0、//无过采样
.uartMode = UCMODE_0、// UART 模式
};
EUSCI_A_UART_init (EUSCI_A0_BASE、&uartParams);
EUSCI_A_UART_translData (EUSCI_A0_BASE、'A');
*/
EUSCI_B_I2C_initMasterParam i2cParams ={
.selectClockSource = EUSCI_B_I2C_CLOCKSOURCE_SMCLK、//使用 SMCLK 作为时钟源
.i2cClk = 100000、// I2C 时钟频率(Hz)
.datarate = 10000、//所需的数据速率(Hz)
.autoSTOPGeneration = EUSCI_B_I2C_NO_AUTO_STOP、//无自动停止生成
.byteCounterThreshold = 0、//无字节计数器阈值
};
uint16_t RESET_SOURCE = 0x00;
//初始化系统的基本功能
HAL_SYSTEM_Init ();
//初始化用户接口,包括按钮、LCD、GUI
HMI_Init ();
//验证重置源并记录/报告是否存在错误
reset_source = hal_system_GetResetSource ();
if (reset_source!= 0x00)
{
USSLibGUIApp_send_error (command_handler_error_fault_reset_error、
RESET_SOURCE);
}
__enable_interrupt ();
//初始化 USS 库
USSLibGU45CDIC(); App_Init
//EUSCI_B_I2C_initMaster (EUSCI_B0_BASE、&i2cParams);
// EUSCI_B_I2C_setSlaveAddress (EUSCI_B0_BASE、0x42);
// EUSCI_B_I2C_ENABLE (EUSCI_B0_BASE);
while (1){
EUSCI_B_I2C_initMaster (EUSCI_B0_BASE、&i2cParams);
EUSCI_B_I2C_setSlaveAddress (EUSCI_B0_BASE、0x42);
EUSCI_B_I2C_ENABLE (EUSCI_B0_BASE);
EUSCI_B_I2C_masterSendSingleByte (EUSCI_B0_BASE、'A');
USSLibGU45CDIC(); App_Engine
}
}