你(们)好。
我将 MSP430FR2311与 driverlib 搭配使用、通过 I2C 与 MPU9250传感器进行通信。
我使用 driverlib 中的示例配置了 I2C:
#define CS_SMCLK_NEWD_FREQUENCY IN_kHz 1000 //设置比率和所需的 MCLK 频率并初始化 DCO CS_initFLSettle (CS_SMCLK_NEWD_INCE_kHz、CS_SMCLK_FLLREF_RA比); //设置 SMCLK = DCO、SPCLK_INCLK_INDIV_INCLK 和 INCLK_INCLK_INCLK_INCLK+ INCLK_INCLK_1 INCLK_INCE_INCLK+ INCLK_INCLK_INCLK_INCLK_1 INCLK_INCE_CLK_1和 INCLK_INCLK_INCLK_INCLK_INCLK_INCLK_INCE_INCE_CLK+ INCLK_INCLK_INCLK_INCE_CLK_1 INCLK_INCE_INCE_INCLK_1、GPIOUNCH_CLK_1和 INCLK_INCLK_INCLK_INCLK_INCLK_INCLK_INCLK_INCLK_INCLK_INCLK_ //禁用 GPIO 上电默认高阻抗模式以激活先前配置的端口设置 PMM_unlockLPM5 (); //初始化主 EUSCI_B_I2C_DISABLE (EUSCI_B0_BASE); EUSCI_B_I2C_initParam ={0}; param.selectClockSource = EUSCI_B_CLOCK_CLOCK_RATE; EUSCI_RATE_RATE = USCI_RATE_RATE_RATE_RATE ={0};EUSCI_RATE = USCI_RATE_RATE_RATE_RATE ={0}ECI_CLUSCI_CLUSCI_RATE_CLUSCI_CLUSCI_RATE = USCI_CLUSCI_RATE;ECI_RATE = USCI_ param.byteCounterThreshold = 1; param.autoSTOPGeneration = EUSCI_B_I2C_NO_AUTO_STOP; EUSCI_B_I2C_initMaster (EUSCI_B0_BASE、¶m); //指定从器件地址 EUSCI_B_I2C_setSlaveAddress (EUSCI_B0_BASE、MPU_I2C_ADDR); //指定从器件地址 EUSCI_I2C 模块(EUSCI_START);//使能 EUSCI_I2C 模块启动 EUCI_I2C 模块
但是、我的逻辑分析仪显示、在向传感器发送数据时 I2C 时钟仅为~196kHz。 通信似乎正常。 由于'EUSCI_B_I2C_SET_DATA_RATE 400KBPS'、我预计时钟将约为400kHz。 我是否理解有问题或我是否做了错误的事情?
谢谢、此致、
MOE