完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
相关推荐
1个回答
|
|
|
在此之前,在其他平台上应用i2c总线用户接口(ioctrl)进行访问EEPROM,现将其移植到RK3399平台运行。
编译系统:Ubuntu16.04 ARM硬件:firefly RK3399 ARM系统:firefly Ubuntu16.04(SDK) 连接i2c:i2c4 EEPROM:AT24C02 电路原理图: 查看器件 首先使用“i2ctools”工具查看硬件连接是否正常。 i2c总线已经正确识别到到AT24C02,根据电路原理图地址线A0—A2接地,所以0x50是AT24C02的器件地址。0x51—0x57是24系列高容量型号芯片的地址(24c04—24c16)。 编译源码 clone源码 文件目录结构:
修改“at24cxx.c”源码 本次硬件使用的是AT系列EEPROM,选择“at24cxx”目录源码。 /* 修改EEPROM数据结构描述 */ /** * @brief device init */ const _24cxx_dev_t at24cxx_dev = { "/dev/i2c-4", /*i2c device name*/ 0x50, /*eeprom address*/ _24C02_E, /*eeprom model,eg AT24C02*/ 0, /*no write protect*/ page_write_delay, /*delay function*/ }; /* 修改测试数据大小 */ #define WR_SIZE (256) /* 24c02容量 */ #define WR_ADDR 0 修改Makefile # # Makefile for the AT24Cxx. # VERSION =1.00 CC =aarch64-linux-gnu-gcc #选择rk3399交叉编译器 DEBUG = CFLAGS =-Wall SOURCES =$(wildcard *.c) $(wildcard ../24cxx/*.c) INCLUDES =-I../24cxx LIB_NAMES = LIB_PATH = OBJ =$(patsubst %.c, %.o, $(SOURCES)) TARGET =at24 #links $(TARGET):$(OBJ) @mkdir -p output $(CC) $(OBJ) $(LIB_PATH) $(LIB_NAMES) -o output/$(TARGET)$(VERSION) @rm -rf $(OBJ) #compile %.o: %.c $(CC) $(INCLUDES) $(DEBUG) -c $(CFLAGS) $< -o $@ .PHONY:clean clean: @echo "Remove linked and compiled files......" rm -rf $(OBJ) $(TARGET) output 编译 执行“make”编译,编译成功,在“output”目录生成执行文件“at241.00”。将文件拷贝到rk3399板子,执行“chmod 777 at241.00”更改执行属性。 执行 程序执行符合预期,i2c用户态访问EEPROM正确。另外,也可以结合“i2ctools”工具验证程序读写正确性。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
谁有3566+电池+POE充电的方案,有个项目需要用该功能的主板
437 浏览 0 评论
RK3588的GMAC0与PHY的参考时钟电平匹配问题??????
4425 浏览 1 评论
请问各位大佬,如何解决,瑞芯微 RV1126B 使用 mpp 自带工具 调试时,内核直接报错崩溃!
1802 浏览 0 评论
使用rk3568开发板,核0\\1\\3运行linux,核2运行hal,在核0中怎么关闭核2
2359 浏览 0 评论
2363 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:06 , Processed in 0.773803 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
657