完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#define BIT0 0x01
#define BIT1 0x02 #define BIT2 0x04 #define BIT3 0x08 #define BIT4 0x10 #define BIT5 0x20 #define BIT6 0x40 #define BIT7 0x80 #define BIT8 0x100 #define BIT9 0x200 #define BIT10 0x400 #define BIT11 0x800 #define BIT12 0x1000 #define BIT13 0x2000 #define BIT14 0x4000 #define BIT15 0x8000 #define BIT16 0x10000 #define BIT22 0x400000 #define BIT24 0x1000000 #define BIT25 0x2000000 #define BIT26 0x4000000 #define BIT27 0x8000000 #define BIT30 0x40000000 void Undef_Handler(void) { } void IRQ_Handler(void) { } void SWI_Handler(void) { } void PAbt_Handler(void) { } void DAbt_Handler(void) { } void FIQ_Handler(void) { } unsigned char szTxData[]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned char szRxData[]={0x00}; #include int main(void) { unsigned char ucWaitingForXIRQ0; unsigned int I2CMSTATUS ; unsigned char ucRxCount ; unsigned char ucTxCount ; POWKEY1 = 0x1; POWCON0 = 0x78; // 主频 10.24Mhz POWKEY2 = 0xF4; GP1CON = BIT0 + BIT4; // Select UART functionality for P1.0/P1.1 COMCON0 = BIT7; // Enable access to COMDIV registers COMDIV0 = 0x21; // Set baud rate to 9600. COMDIV1 = 0x00; COMCON0 = BIT0 + BIT1 + BIT2; //========================================== GP0CON0 = BIT4 + BIT12; // Select SPI/I2C alternative function for P0.1 P0.3 GP0KEY1 = 0x7; // Write to GP0KEY1 GP0CON1 = BIT1; // Select I2C functionality for P0.1 P0.3 GP0KEY2 = 0x13; // Write to GP0KEY2 I2CMCON = BIT0 ; I2CDIV = 0x3e3e; // Select 80kHz clock rate ucTxCount = 0; I2CFSTA = BIT9; // Flush Master Tx FIFO I2CFSTA = ~BIT9; I2CMTX = 0x00; I2CADR0 = 0xA0; ucWaitingForXIRQ0 = 1; ucRxCount = 0; while (1) { if (ucWaitingForXIRQ0 == 0) // Wait for XIRQ0 to trigger - cleared in XIRQ0 ISR { ucWaitingForXIRQ0 = 1; ucRxCount = 0; I2CMCNT0 = 9; // Read back 6 bytes I2CADR0 = 0xA1;}// + I2C_RD_BIT; // Begin Read sequence from Slave if(ucWaitingForXIRQ0 == 1) { I2CMSTATUS = 0; I2CMSTATUS = I2CMSTA; if ((I2CMSTATUS BIT2) == BIT2) // If I2C Master Tx IRQ { if (ucTxCount < 8) // Have max 6 bytes been sent? {I2CMTX = szTxData[ucTxCount++]; // Load Tx buffer } ucWaitingForXIRQ0 =0;} if ((I2CMSTATUS BIT3) == BIT3) // If I2C Master Rx IRQ {if (ucRxCount < 8) // Have max 6 bytes been received? {szRxData[ucRxCount] = I2CMRX; // Read Rx buffer while(!((COMSTA0 BIT6)==BIT6)){}; COMTX=szRxData[ucRxCount]; ucRxCount++;} ucWaitingForXIRQ0 =1; } } } } |
|
相关推荐
2个回答
|
|
在ADuC7060的网页上有参考代码可以下载,里面有一个例程是关于I2C_EPROM的。
|
|
|
|
根据您提供的代码片段,无法确定为什么aduc7060 IIC接口无法读取at24c04。首先,代码片段中的定义只是一些位掩码,与IIC接口相关的代码并未给出。请提供完整的代码以便进一步分析和帮助解决问题。
同时,如果您遇到问题,可以尝试以下步骤进行排查: 1. 确保IIC接口的硬件连接正确,包括SDA、SCL、上拉电阻等。 2. 检查IIC接口的初始化是否正确,包括设置IIC的时钟频率、模式等参数。 3. 确保正确的IIC通信地址已被设置,确保配置正确,与at24c04的通信地址匹配。 4. 检查是否有其他硬件或软件冲突造成读取失败。 5. 使用适当的调试工具(如串口打印)输出调试信息,检查是否有错误提示或异常情况发生。 如果以上方法都无法解决问题,请提供更多相关的代码和错误信息,以便更准确地分析和解决问题。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11969 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:13 , Processed in 0.712485 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号