[MINI51] ddllxxrrMiNi51学习第五贴 IIC 24LC64

[复制链接]
 楼主| 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的童鞋可以试下:
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /* */
  3. /* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
  4. /* */
  5. /*---------------------------------------------------------------------------------------------------------*/
  6. #include "includes.h" //包含所需的头文件
  7. extern void Write_24LC64(uint32_t address, uint8_t data);
  8. extern uint8_t Read_24LC64(uint32_t address);
  9. uint32_t i2cdata = 0;
  10. uint8_t count;
  11. uint8_t flag;

  12. /*************************************************************************************
  13. ** Function name: main
  14. ** Descriptions: GPIOINT
  15. ** input parameters: 无
  16. ** output parameters: 无
  17. ** Returned value: 无
  18. *************************************************************************************/
  19. int main (void)
  20. {
  21. Set_System(); //调用系统初始化函数

  22. DrvGPIO_InitFunction(FUNC_I2C);
  23. Write_24LC64(0x00000000,11);
  24. i2cdata = Read_24LC64(0x00000000);
  25. if(i2cdata == 11)
  26. DrvGPIO_ClrBit(E_PORT3, 1); //LED0-ON
  27. delay_ms(200);
  28. Write_24LC64(0x00000001,12);
  29. i2cdata = Read_24LC64(0x00000001);
  30. if(i2cdata == 12)
  31. DrvGPIO_ClrBit(E_PORT3, 6); //LED1-ON
  32. delay_ms(200);
  33. Write_24LC64(0x00000002,13);
  34. i2cdata = Read_24LC64(0x00000002);
  35. if(i2cdata == 13)
  36. DrvGPIO_ClrBit(E_PORT5, 2); //LED2-ON
  37. delay_ms(200);
  38. Write_24LC64(0x00000003,14);
  39. i2cdata = Read_24LC64(0x00000003);
  40. if(i2cdata == 14)
  41. DrvGPIO_ClrBit(E_PORT2, 6); //LED3-ON
  42. delay_ms(200);
  43. for(count=0;count<4;count++)
  44. {
  45. if(Read_24LC64(count)==count+11)
  46. flag++;
  47. else
  48. {
  49. break;
  50. }
  51. }
  52. if(flag==4)
  53. {
  54. DrvGPIO_SetBit(E_PORT3, 1); //LED0-OFF
  55. DrvGPIO_SetBit(E_PORT3, 6); //LED1-OFF
  56. DrvGPIO_SetBit(E_PORT5, 2); //LED2-OFF
  57. DrvGPIO_SetBit(E_PORT2, 6); //LED3-OFF

  58. }


  59. while(1);


  60. }


上工程,欧啦


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部