在线时间256 小时
UID3464804
注册时间2018-5-28
NXP金币6
TA的每日心情 | 衰 2021-2-4 09:24 |
---|
签到天数: 190 天 连续签到: 1 天 [LV.7]常住居民III
金牌会员
 
- 积分
- 2207
- 最后登录
- 2025-8-11
|
之前写过搭建开发环境以及LED点亮,今天更新一个IOT板子驱动I2C的教程,在米尔提供的资料里面,\04-Source\MYS-6ULX-example下有一个i2c_flash文件夹,里面有i2c的驱动示例,但是官方的板子没有eeprom,所以需要外接一个24c02,查米尔的用户手册可知i2c在J2排针10和12引脚,
这里是i2c 2
然后我们连接我们的24c02,原理图如下
连接好了以后打开开发板的终端,输入命令
#cd /dev
#ls
打开设备文件,在里面可以找到i2c-1,这个i2c-1就是我们刚才看到原理图上的i2c2,(nxp的这个i2c标号应该是从1开始的,所以i2c2对于dev中的i2c-1),然后输入命令
#i2cdetect -y 1
如果此时你的i2c从设备at24c02连接正常,则会在屏幕上看到该设备
硬件连接好了以后,我们来看源码,这里提供两个源码,一个是米尔的源码,一个是自己查资料写的源码。打开04-Source\MYS-6ULX-example\i2c_flash,里面存放了I2C的源码,但是官方的资料没有示例怎么用,分析了源码知道是通过open打开设备树的方式,下面展示官方资料下的i2c_flash读写功能,首先拷贝04-Source\MYS-6ULX-example\i2c_flash文件夹下的i2c_flash.c以及Makefile到虚拟机Ubuntu(直接复制粘贴到虚拟机),然后打开虚拟机的终端,加载编译器到当前shell,(参考01-Document\User_Manual\Chinese、MYS-6ULX-LinuxDevelopmentGuide_zh.pdf),然后用cd命令打开i2c_flash文件夹,终端输入
#make
#ls
然后就会看到该文件夹下多出了一个i2c_flash和i2c_flash.o,拷贝i2c_flash文件到win的tftp32的文件目录下,然后打开开发板终端,输入,命令
#tftp -r -g i2c_flash 192.168.0.10
#ls
上面的192.168.0.10为你pc的ip地址,成功后会看到该目录下多了一个i2c_flash文件,然后输入命令
#chmod 777 i2c_flash
#./i2c_flash /dev/i2c-1
我这里把文件名改成了i2c_eeprom,大家在做的时候还是用我上面发的命令;执行完成以后我们发现Read pack有四个字节数据,跟我们写入的数据一致,实验成功。下面附上官方的源码截图
我们发现我们写入的跟刚刚读出来的一致。好了官方的代码就写到这里,下面附上我自己写到代码,思路是一样的,操作方法有区别
我的代码在执行时会要求用户输入一个字符,然后将该字符写入eeprom,然后读刚刚写入的那个地址,看读出来的跟写入的是否一致,参考上面的方法编译代码并拷贝至开发板,我这里将我的代码命名为i2c_24c02,在开发板终端执行
root@mys6ull14x14:~#chmod 777 i2c_24c02
root@mys6ull14x14:~# ./i2c_24c02
Hello,This is i2c test
inputa char you want to write to E2PROM
w
writereturn:3, write data:77
rddata:w
root@mys6ull14x14:~#
其中w为用户输入的字符,下面附上截图
到这就结束了,附上代码
|
-
-
i2c.zip
969 Bytes, 下载次数: 13, 下载积分: 威望 1
|