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.
大家好、
我希望有人能在这里提供一些帮助。
在使用 driverlib 命令成功写入和读取 I2C 器件后、我决定尝试使用传感器库驱动程序(看起来更好)、并复制 SPMU371D 第79和80页中的示例。 此外、我在"startup_css.c"中添加了中断处理程序、并初始化 I2C 端口1。
需要注意的是、在运行该代码时、I2C 信号根本没有任何活动。 调试代码时、微控制器保持在"while (!g_bI2CMSSimpleDone)"行中。 在下面的示例中、请不要考虑从器件地址、至少我想在 I2C 端口中看到一些活动! 这里需要什么?
任何帮助都已通知、
Justo
#include #include #include "inc/hw_types.h" #include "lib/hw_memmap.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" #include "driverlib/i2c.h" #include "driverlib/rom.h" #include "driverlib/pin_map.h" #include "driveriptintrinc/包含"hw_status.h"#define #mdio.htm#include "#define #include "#mdio.h" tI2CMInstance g_sI2CMSSimpleInst; //完成 I2C 事务时设置的布尔值。 volatile bool g_bI2CMSSimpleDone = true; // // I2C 模块的中断处理程序。 // void I2CMSSimpleIntHandler (void) { I2CMIntHandler (&g_sI2CMSSimpleInst); } // //在 I2C 事务完成后回调。 // void I2CMSSimpleCallback (void *pvData、uint_fast8_t ui8Status) { //查看是否发生错误。 if (ui8Status!= I2CM_STATUS_SUCCESS) { //发生了错误,所以如果需要,请在此处处理。 UARTprintf ("Error\n"); } //指示 I2C 事务已完成。 G_bI2CMSimpleDone = true; UARTprintf ("无错误\n"); } // I2C 主驱动程序示例。 void I2CMSSimpleExamples(void){ uint8_t pui8Data[4]; // //初始化 I2C 主驱动程序。 假设 I2C 模块具有 //已启用并且 I2C 引脚已配置。 // I2CMInit (&g_sI2CMSSimpleInst、I2C1_base、INT_I2C1、0xff、0xff、 8000000); // //将两个字节的数据写入地址0x22的 I2C 器件。 // G_bI2CMSimpleDone = false; I2CMWrite (&g_sI2CMSimpleInst、0x22、pui8Data、2、I2CMSimpleCallback、 0); while (!g_bI2CMSSimpleDone) { } // //从地址0x31处的 I2C 器件读取四个字节的数据。 // G_bI2CMSimpleDone = false; I2CMRead (&g_sI2CMSSimpleInst、0x31、pui8Data、1、pui8Data、 4、 I2CMSSimpleCallback、0); while (!g_bI2CMSSimpleDone) { } } // 串行端口配置 // void ConfigureUART (void) { ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA); ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0); ROM_GPIOPinConfigure (GPIO_PA0_U0RX); ROM_GPIOPinConfigure (GPIO_PA1_U0TX); ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1); UARTClockSourceSet (UART0_BASE、UART_CLOCK_PIOSC); UARTStdioConfig (0、115200、16000000); } // 主 // int main (void) { ConfigureUART ();//初始化串行端口 SysClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SysCtlSYSCTL_XCLKUST_GPIOST_CLK );//配置 GPIOPTL_PICTL_PIOSC_PIOSC_6 (GPIORT_CL_PIOSC_CA_PIN_CL_SIMPLE_PIOSC_CAUST_CLK);/ SYSCIP_PIOSC_PIOSC_PIOSC_PIN_CAST_CAST_PIN_PEL (GPIORT_PIOSC_PIOSC_CAST_CAST_PIN_PI_CAST_I) GPIO_PIN_7); GPIOPinConfigure (GPIO_PA6_I2C1SCL); GPIOPinConfigure (GPIO_PA7_I2C1SDA); //启用并初始化 I2C1主模块。 false:100kbps;true:400kbps。 I2CMasterInitExpClk (I2C1_base、SysCtlClockGet ()、false); //发送一些内容! I2CMSSimpleExampl(); while (1) { SysCtlDelay (20000000); } }