本帖最后由 hotpower 于 2012-9-22 12:40 编辑
这个是刚调通的,我认为MINI51的IIC非常好,简单好用。
I2C是一个双向串行总线标准,2根线,在设备间提供简单有效的数据传输方法. I2C 标准支持多主设备,冲突检测和仲裁,如果两个以上的主设备试图同时控制总线时,可以防止数据被破坏. 双向,串行,8位数据宽度,最快速度可以达到1.0 Mbps.
Mini51 系列的I2C可以作为主或者从设备,I2C驱动可以帮助用户更容易的使用I2C功能.
I2C有如下特性:
. 支持主/从模式,最高速度可以达到1Mbps.
. 内嵌一个14-bit超时计数器,如果I2C操作阻塞,超时将发生超时中断.
. 支持7-bit中断模式.
. 支持多地址识别. (4个从地址,带掩码)
其设置非常方便如:
DrvI2C_Open (100000);
这样把通讯速率也给设好了
下面说一下,我的24LC64的编程思想,就是往1,2,3,4,单元写11,12,13,14,写完并读完灯依次亮,最后出厂时总检一下,都对灯全灭,这个老好了,有MINI51的童鞋可以试下:/*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
#include "includes.h" //包含所需的头文件
extern void Write_24LC64(uint32_t address, uint8_t data);
extern uint8_t Read_24LC64(uint32_t address);
uint32_t i2cdata = 0;
uint8_t count;
uint8_t flag;
/*************************************************************************************
** Function name: main
** Descriptions: GPIOINT
** input parameters: 无
** output parameters: 无
** Returned value: 无
*************************************************************************************/
int main (void)
{
Set_System(); //调用系统初始化函数
DrvGPIO_InitFunction(FUNC_I2C);
Write_24LC64(0x00000000,11);
i2cdata = Read_24LC64(0x00000000);
if(i2cdata == 11)
DrvGPIO_ClrBit(E_PORT3, 1); //LED0-ON
delay_ms(200);
Write_24LC64(0x00000001,12);
i2cdata = Read_24LC64(0x00000001);
if(i2cdata == 12)
DrvGPIO_ClrBit(E_PORT3, 6); //LED1-ON
delay_ms(200);
Write_24LC64(0x00000002,13);
i2cdata = Read_24LC64(0x00000002);
if(i2cdata == 13)
DrvGPIO_ClrBit(E_PORT5, 2); //LED2-ON
delay_ms(200);
Write_24LC64(0x00000003,14);
i2cdata = Read_24LC64(0x00000003);
if(i2cdata == 14)
DrvGPIO_ClrBit(E_PORT2, 6); //LED3-ON
delay_ms(200);
for(count=0;count<4;count++)
{
if(Read_24LC64(count)==count+11)
flag++;
else
{
break;
}
}
if(flag==4)
{
DrvGPIO_SetBit(E_PORT3, 1); //LED0-OFF
DrvGPIO_SetBit(E_PORT3, 6); //LED1-OFF
DrvGPIO_SetBit(E_PORT5, 2); //LED2-OFF
DrvGPIO_SetBit(E_PORT2, 6); //LED3-OFF
}
while(1);
}
上工程,欧啦
IIC24C64.rar
(542.51 KB)
|