完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是tiVAWARE库里面的例子,加载到CCS6.0里面编译就出错了,还有自己配置的硬件I2C也是出类似的错误(路径设置正确),下面是代码,错误在上面的附件里
#include #include #include #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "driverlib/gpio.h" #include "driverlib/interrupt.h" #include "driverlib/pin_map.h" #include "driverlib/sysctl.h" #include "driverlib/timer.h" #include "driverlib/uart.h" #include "utils/softi2c.h" #include "utils/uartstdio.h" #define SLAVE_ADDR 0x54 #define STATE_IDLE 0 #define STATE_WRITE_NEXT 1 #define STATE_WRITE_FINAL 2 #define STATE_WAIT_ACK 3 #define STATE_SEND_ACK 4 #define STATE_READ_ONE 5 #define STATE_READ_FIRST 6 #define STATE_READ_NEXT 7 #define STATE_READ_FINAL 8 #define STATE_READ_WAIT 9 static tSoftI2C g_sI2C; static uint8_t *g_pui8Data = 0; static uint32_t g_ui32Count = 0; static volatile uint32_t g_ui32State = STATE_IDLE; void InitConsole(void) [ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinConfigure(GPIO_PA0_U0RX); GPIOPinConfigure(GPIO_PA1_U0TX); SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC); GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); UARTStdioConfig(0, 115200, 16000000); ] void SoftI2CCallback(void) [ SoftI2CIntClear(&g_sI2C); switch(g_ui32State) [ case STATE_IDLE: [ break; ] case STATE_WRITE_NEXT: [ SoftI2CDataPut(&g_sI2C, *g_pui8Data++); g_ui32Count--; SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_SEND_CONT); if(g_ui32Count == 1) [ g_ui32State = STATE_WRITE_FINAL; ] break; ] case STATE_WRITE_FINAL: [ SoftI2CDataPut(&g_sI2C, *g_pui8Data++); g_ui32Count--; SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_SEND_FINISH); g_ui32State = STATE_SEND_ACK; break; ] case STATE_WAIT_ACK: [ if(SoftI2CErr(&g_sI2C) == SOFTI2C_ERR_NONE) [ SoftI2CDataGet(&g_sI2C); g_ui32State = STATE_IDLE; break; ] ] case STATE_SEND_ACK: [ SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR, true); SoftI2CControl(&g_sI2C, SOFTI2C_CMD_SINGLE_RECEIVE); g_ui32State = STATE_WAIT_ACK; break; ] case STATE_READ_ONE: [ SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR, true); SoftI2CControl(&g_sI2C, SOFTI2C_CMD_SINGLE_RECEIVE); g_ui32State = STATE_READ_WAIT; break; ] case STATE_READ_FIRST: [ SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR, true); SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_RECEIVE_START); g_ui32State = STATE_READ_NEXT; break; ] case STATE_READ_NEXT: [ *g_pui8Data++ = SoftI2CDataGet(&g_sI2C); g_ui32Count--; SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_RECEIVE_CONT); if(g_ui32Count == 2) [ g_ui32State = STATE_READ_FINAL; ] break; ] case STATE_READ_FINAL: [ *g_pui8Data++ = SoftI2CDataGet(&g_sI2C); g_ui32Count--; SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_RECEIVE_FINISH); g_ui32State = STATE_READ_WAIT; break; ] case STATE_READ_WAIT: [ *g_pui8Data++ = SoftI2CDataGet(&g_sI2C); g_ui32Count--; g_ui32State = STATE_IDLE; break; ] ] ] void AtmelWrite(uint8_t *pui8Data, uint32_t ui32Offset, uint32_t ui32Count) [ g_pui8Data = pui8Data; g_ui32Count = ui32Count; if(ui32Count != 1) [ g_ui32State = STATE_WRITE_NEXT; ] else [ g_ui32State = STATE_WRITE_FINAL; ] SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR | (ui32Offset >> 8), false); SoftI2CDataPut(&g_sI2C, ui32Offset); SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_SEND_START); while(g_ui32State != STATE_IDLE) [ ] ] void AtmelRead(uint8_t *pui8Data, uint32_t ui32Offset, uint32_t ui32Count) [ g_pui8Data = pui8Data; g_ui32Count = ui32Count; if(ui32Count == 1) [ g_ui32State = STATE_READ_ONE; ] else [ g_ui32State = STATE_READ_FIRST; ] SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR | (ui32Offset >> 8), false); SoftI2CDataPut(&g_sI2C, ui32Offset); SoftI2CControl(&g_sI2C, SOFTI2C_CMD_SINGLE_SEND); while(g_ui32State != STATE_IDLE) [ ] ] void Timer0AIntHandler(void) [ TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); SoftI2CTimerTick(&g_sI2C); ] int main(void) [ uint8_t pui8Data[16]; uint32_t ui32Idx; SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3); memset(&g_sI2C, 0, sizeof(g_sI2C)); SoftI2CCallbackSet(&g_sI2C, SoftI2CCallback); SoftI2CSCLGPIOSet(&g_sI2C, GPIO_PORTB_BASE, GPIO_PIN_2); SoftI2CSDAGPIOSet(&g_sI2C, GPIO_PORTB_BASE, GPIO_PIN_3); SoftI2CInit(&g_sI2C); SoftI2CIntEnable(&g_sI2C); TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC); TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet() / 40000); TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); TimerEnable(TIMER0_BASE, TIMER_A); IntEnable(INT_TIMER0A); InitConsole(); UARTprintf("SoftI2C Atmel AT24C08A examplen"); UARTprintf("Write:"); for(ui32Idx = 0; ui32Idx < 16; ui32Idx++) [ pui8Data[ui32Idx] = ui32Idx; UARTprintf(" %02x", pui8Data[ui32Idx]); ] UARTprintf("n"); AtmelWrite(pui8Data, 0, 16); AtmelRead(pui8Data, 0, 16); UARTprintf("Read :"); for(ui32Idx = 0; ui32Idx < 16; ui32Idx++) [ UARTprintf(" %02x", pui8Data[ui32Idx]); ] UARTprintf("n"); UARTprintf("Done.nn"); return(0); ] |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1888 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3641 浏览 4 评论
5027 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1732 浏览 1 评论
9351 浏览 8 评论
CC3100BOOST使用CC3200lunchXL进行烧录
664浏览 2评论
707浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
668浏览 1评论
1186浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1189浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-18 04:50 , Processed in 0.611972 second(s), Total 66, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号