大家好、
问题:硬件 i2c 中断被写入 EEPROM 数据、当不初始化 MCLK 时钟时、数据可以正常写入、而 在初始化 MCLK 时钟后、数据无法写入。
您能否帮助检查原因是什么? 谢谢。
此致、
樱桃
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.
大家好、
问题:硬件 i2c 中断被写入 EEPROM 数据、当不初始化 MCLK 时钟时、数据可以正常写入、而 在初始化 MCLK 时钟后、数据无法写入。
您能否帮助检查原因是什么? 谢谢。
此致、
樱桃
您好、Allen、
很抱歉、描述不清楚。 第一个映像是不初始化 MCLK 时钟的情况。
[引用 userid="496057" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontroller-forum/1060009/msp430fr6043-can-write-data-ote-to -EEPROM]如果不初始化 MCLK 时钟、数据通常可以写入[/引用]第二个映像是在初始化时。
[引用 userid="496057" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontroller-forum/1060009/msp430fr6043-can-write-data-to -EEPROM]初始化 MCLK 时钟后、无法写入数据[引用/引用]。好的、我将向客户更新。 谢谢。
此致、
樱桃
您好、Allen、
[引用 userid="415886" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontroller-forum/1060009/msp430fr6043-can-write-data--to-EEPROM/3921202#3921202"]客户如何初始化 LMCK[引用]静态空 hal_system_ClockInit (空)
{
FRAMCTL_A_configureWaitStateControl (FRAMCTL_A_ACCESS_TIME_CYCESS_1);
//将 DCO 频率设置为默认的16MHz
CS_setDCOFreq (CS_DCORSEL_1、CS_DCOFSEL_4);
//将外部时钟频率设置为32.768KHz
cs_setExternalClockSource (32768、0);
//MCLK 16MHz
CS_initClockSignal (CS_MCLK、CS_DCOCLK_SELECT、CS_Clock_divider);
//SMCLK 8MHz
CS_initClockSignal (CS_SMCLK、CS_DCOCLK_SELECT、CS_Clock_divider);
//ACLK 32.768K
CS_initClockSignal (CS_ACLK、CS_LFXTCLK_select、CS_Clock_divider);
//初始化 XT1晶体振荡器
CS_TurnOnLFXT (CS_LFXT_DRIVE_3);
}
void hal_I2cInit (void)
{
//配置 B0时钟源 SMLK、RATE、
EUSCI_B_I2C_initMasterParam param ={0};
param.selectClockSource = EUSCI_B_I2C_CLOCKSOURCE_SMCLK;
param.i2cClk = CS_getSMCLK ();
param.datarate = EUSCI_B_I2C_SET_DATA_RATE_400KBPS;
//param.byteCounterThreshold = 10;
param.byteCounterThreshold = 0;
param.autoSTOPGeneration = EUSCI_B_I2C_NO_AUTO_STOP;
//param.autoSTOPGeneration = EUSCI_B_I2C_SEND_STOP_Automatically _ON_BYTECOUNT_T_THRESHOLD;
//设置主模式
EUSCI_B_I2C_initMaster (EEPROM_base、param);
//设置从器件地址
EUSCI_B_I2C_setSlaveAddress (EEPROM_base、EEPROM_ADDRESS);
EUSCI_B_I2C_setMode (EEPROM_base、EUSCI_B_I2C_Transmit 写入模式);//μ s
//启用 B0
EUSCI_B_I2C_ENABLE (EEPROM_base);
//清除发送中断,确认中断
EUSCI_B_I2C_clearInterrupt (EEPROM_base、
EUSCI_B_I2C_Transmit INTERRUPT0 +
EUSCI_B_I2C_NAK_INTERRUPT
);
EUSCI_B_I2C_enableInterrupt (EEPROM_base、
EUSCI_B_I2C_Transmit INTERRUPT0 +
EUSCI_B_I2C_NAK_INTERRUPT
);
}
上面是时钟初始化和 I2C 初始化的配置。
谢谢、此致、
樱桃
您好、Cherry、
[引用 userid="496057" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontroller-forum/1060009/msp430fr6043-can-write-data--to-EEPROM/3922401#3922401"] param_microcontrollers[_quote = eUSCI_data_set]确保此速率与新的 SMCLK 匹配。