本帖最后由 feihufuture 于 2020-9-11 22:49 编辑
FPGA操作AR0144毕竟不太灵活,但是如果是用SDK或者linux去访问,那就方便多了。
顺便研究了下ZYNQ的ARM的IIC控制器,根据开发板提供的例程,对相关函数进行修改。
AR0144的配置网上很多地方都有,不贴代码了,就贴两个关键的读写函数。
[payamount]49.00[/payamount]
[pay]
- //经测试发现:写的地址和数据都是先写高字节,再写低字节;但读出的数据,是高自己在eeprom_rbuf的低位!
- void read_eeprom(u16 addr)
- {
- eeprom_wbuf[0]=addr>>8;
- eeprom_wbuf[1]=addr;
- I2cPs_write(&Iic,eeprom_wbuf, 2, EEPROM_ADDR);
- I2cPs_read (&Iic,eeprom_rbuf, 2, EEPROM_ADDR);
- }
- void write_eeprom(u16 addr,u16 data)
- {
- eeprom_wbuf[0]=addr>>8;
- eeprom_wbuf[1]=addr;
- eeprom_wbuf[2]=data>>8;
- eeprom_wbuf[3]=data;
- I2cPs_write(&Iic,eeprom_wbuf,4,EEPROM_ADDR);
- //start write from eeprom_wbuf[0]
- }
- #define EEPROM_ADDR 0x21>>1
- void eeprom_test();
- void read_eeprom(u16 addr);
- void write_eeprom(u16 addr,u16 data);
- u8 eeprom_rbuf[8];
- u8 eeprom_wbuf[8];
[/pay]
|