完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
这是从官网上找的I2C例程,结果还是无法完成诊断和调试过程。有没有好心人帮我解答嘛,任务很紧急死人啦
#include #include #include "inc/hw_i2c.h" #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/gpio.h" #include "driverlib/i2c.h" #include "driverlib/pin_map.h" #include "driverlib/sysctl.h" #include "driverlib/uart.h" #include "utils/uartstdio.h" #define NUM_I2C_DATA 3 #define SLAVE_ADDRESS 0x3C void InitConsole(void) [ // // Enable GPIO port A which is used for UART0 pins. // TODO: change this to whichever GPIO port you are using. // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); // // Configure the pin muxing for UART0 functions on port A0 and A1. // This step is not necessary if your part does not support pin muxing. // TODO: change this to select the port/pin you are using. // GPIOPinConfigure(GPIO_PA0_U0RX); GPIOPinConfigure(GPIO_PA1_U0TX); // // Enable UART0 so that we can configure the clock. // SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); // // Use the internal 16MHz oscillator as the UART clock source. // UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC); // // Select the alternate (UART) function for these pins. // TODO: change this to select the port/pin you are using. // GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); // // Initialize the UART for console I/O. // UARTStdioConfig(0, 115200, 16000000); ] int main(void) [ uint32_t pui32DataTx[NUM_I2C_DATA]; uint32_t pui32DataRx[NUM_I2C_DATA]; uint32_t ui32Index; SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); GPIOPinConfigure(GPIO_PB2_I2C0SCL); GPIOPinConfigure(GPIO_PB3_I2C0SDA); GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2); GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3); HWREG(I2C0_BASE + I2C_O_MCR) |= 0x01; I2CMasterInitExpClk(I2C0_BASE, SysCtlClockGet(), false); I2CSlaveEnable(I2C0_BASE); I2CSlaveInit(I2C0_BASE, SLAVE_ADDRESS); I2CMasterSlaveAddrSet(I2C0_BASE, SLAVE_ADDRESS, false); InitConsole(); UARTprintf("I2C Loopback Example ->"); UARTprintf("n Module = I2C0"); UARTprintf("n Mode = Single Send/Receive"); UARTprintf("n Rate = 100kbpsnn"); pui32DataTx[0] = 'I'; pui32DataTx[1] = '2'; pui32DataTx[2] = 'C'; for(ui32Index = 0; ui32Index < NUM_I2C_DATA; ui32Index++) [ pui32DataRx[ui32Index] = 0; ] UARTprintf("Tranferring from: Master -> Slaven"); for(ui32Index = 0; ui32Index < NUM_I2C_DATA; ui32Index++) [ UARTprintf(" Sending: '%c' . . . ", pui32DataTx[ui32Index]); I2CMasterDataPut(I2C0_BASE, pui32DataTx[ui32Index]); I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_SEND); while(!(I2CSlaveStatus(I2C0_BASE) & I2C_SLAVE_ACT_RREQ)); pui32DataRx[ui32Index] = I2CSlaveDataGet(I2C0_BASE); while(I2CMasterBusy(I2C0_BASE)) [ ] UARTprintf("Received: '%c'n", pui32DataRx[ui32Index]); ] for(ui32Index = 0; ui32Index < NUM_I2C_DATA; ui32Index++) [ pui32DataRx[ui32Index] = 0; ] UARTprintf("nnTranferring from: Slave -> Mastern"); I2CMasterSlaveAddrSet(I2C0_BASE, SLAVE_ADDRESS, true); I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE); while(!(I2CSlaveStatus(I2C0_BASE) & I2C_SLAVE_ACT_TREQ)) [ ] for(ui32Index = 0; ui32Index < NUM_I2C_DATA; ui32Index++) [ UARTprintf(" Sending: '%c' . . . ", pui32DataTx[ui32Index]); I2CSlaveDataPut(I2C0_BASE, pui32DataTx[ui32Index]); I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE); while(!(I2CSlaveStatus(I2C0_BASE) & I2C_SLAVE_ACT_TREQ)) [ ] pui32DataRx[ui32Index] = I2CMasterDataGet(I2C0_BASE); UARTprintf("Received: '%c'n", pui32DataRx[ui32Index]); ] UARTprintf("nDone.nn"); return(0); ] |
|
相关推荐
6 个讨论
|
|
ji5687 发表于 2019-9-9 12:46 太坑了,我就说官方的例程没问题的。我以前试过的,网上的例程有时候就是害人。有次玩STM32的板子,搞了好久都不成功,后来才发现是网上下载的库的原因。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
553 浏览 0 评论
1616 浏览 0 评论
2049 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1516 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1342 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1759浏览 29评论
2786浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1726浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1637浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1647浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 01:25 , Processed in 1.690041 second(s), Total 56, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2938