[MINI51]

ddllxxrrMiNi51学习第五贴 IIC 24LC64

[复制链接]
2049|3
手机看帖
扫描二维码
随时随地手机跟帖
ddllxxrr|  楼主 | 2012-1-17 10:41 | 显示全部楼层 |阅读模式
本帖最后由 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)

相关下载

相关帖子

hotpower| | 2012-1-17 17:59 | 显示全部楼层
新唐有例程的。总之,不要软件模拟。

使用特权

评论回复
ddllxxrr|  楼主 | 2012-1-17 21:19 | 显示全部楼层
这个是在开发板上调通地啊???

使用特权

评论回复
jack_huang80| | 2018-3-13 18:23 | 显示全部楼层
感谢提供源码!!等待了几个月!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2392

主题

6933

帖子

66

粉丝