|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
请大家帮我看看2138的程序,帮我找出问题来,谢谢! |
作者:老北 栏目:ARM技术 |
我用lpc2138通过I2C访问AT24C512,写入十个数据之后,再读出十个数据,进行校验,看写入和读出的数是否一致,如校验正确,则蜂鸣器响以下,同时在程序中加上了串口输出程序,但是蜂鸣器不鸣,而且串口输不出数据,程序代码如下: /****************************************COPYRIGHT (c)************************************************** ** Guangzou ZLG-MCU Development Co.,LTD. ** graduate school ** http://www.zlgmcu.com ** **--------------File Info------------------------------------------------------------------------------- ** File NAME: main.c ** Last MODIFIED Date: 2004-09-16 ** Last Version: 1.0 ** Descriptions: The main() function example template ** **------------------------------------------------------------------------------------------------------ ** Created by: Chenmingji ** Created date: 2004-09-16 ** Version: 1.0 ** Descriptions: The original version ** **------------------------------------------------------------------------------------------------------ ** MODIFIED by: ** MODIFIED date: ** Version: ** Descriptions: ** ********************************************************************************************************/ #include "config.h" #include "I2CINT.h" #define AT24C512 0xA0 /* AT24C512器件从地址 */ #define BEEP 1 << 7 /* 蜂鸣器BEEP控制口,P0.7,低电平蜂鸣 */ #define UART_BPS 115200 extern uint8 data_buf[]; /* ********************************************************************************************************* ** 函数名称 :DelayNS() ** 函数功能 :长软件延时 ** 入口参数 :dly 延时参数,值越大,延时越久 ** 出口参数 :无 ********************************************************************************************************* */ void DelayNS (uint32 dly) { uint32 i; for ( ; dly>0; dly--) for (i=0; i<50000; i++); } /* ********************************************************************************************************* ** 函数名称 :GPIO_Init() ** 函数功能 :GPIO初始化 通用I/O口的初始化 ** 入口参数 : ** 出口参数 :无 ********************************************************************************************************* */ void GPIO_Init() { PINSEL0 = (PINSEL0 & (~0xF0)) | 0x50; // 不影响其它管脚连接,设置P0.2-SCL0,P0.3-SDA0 PINSEL0 = 0x00000005; // 设置I/O连接到UART0,P0.0-TXD0,P0.1-RXD0 } /* ********************************************************************************************************* ** 函数名称 :IRQ_Init() ** 函数功能 :IRQ中断初始化 ** 入口参数 : ** 出口参数 :无 ********************************************************************************************************* */ void IRQ_Init() { /* 设置I2C中断允许 */ VICIntSelect = 0x00000000; /* 设置所有通道为IRQ中断 */ VICVectCntl0 = (0x20 | 0x09); /* I2C通道分配到IRQ slot0,最高优先级 */ VICVectAddr0 = (int32)IRQ_I2C; /* 设置I2C中断向量 */ VICIntEnable = (1 << 9); /* 使能I2C中断 */ } /* ********************************************************************************************************* ** 函数名称 :I2cInit() ** 函数功能 :I2C初始化 ** 入口参数 :Fi2c I2C总线频率(最大400K),LPC2138有两个I2C接口,但是没有在SDA SCL上加上拉电阻 因此在外扩I2C总线时,需要在SDA SCL线上各加一个阻值为10K的上拉电阻 使用P0.2-SCL0,P0.3-SDA0 JP1-VCC,JP2-GND,JP3-SCL,JP4-SDA I2C从设备使用AT24C512, A1,A0未接,默认为0,因此AT24C512的地址为1010,0 A1 A0 R/W   |
2楼: | >>参与讨论 |
作者: HQGBOY 于 2006/9/12 8:55:00 发布:
读不出来吗?读写IIC延时长点... |
3楼: | >>参与讨论 |
作者: 老北 于 2006/9/12 14:45:00 发布:
先写后读,和单一的读写都不行 先写后读,和单一的读写都不行, 程序总是跑飞,一直停在写/读函数中的while(ICend==0){};处 |
4楼: | >>参与讨论 |
作者: tallergao 于 2006/9/12 18:58:00 发布:
你用的什么芯片阿? |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |