完善资料让更多小伙伴认识你,还能领取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 个讨论
|
|
只有小组成员才能发言,加入小组>>
586 浏览 0 评论
1644 浏览 0 评论
2082 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1534 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1375 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1787浏览 29评论
2812浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1746浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1657浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1676浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 03:41 , Processed in 0.832020 second(s), Total 63, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3145