1、背景介绍

RXS2448是三代交换和二代交换1848有很多类似的地方。原以为IIC时序会继承,然后直接上IDT1848IIC驱动发现并不能成功读取数据。

借由调试RXS2448 I2C访问驱动编写熟悉I2C读写时序编程,我们这里RXS2448做从机模式。

2、实现过程

2.1 、slave adderss 确认

阅读RXS2448硬件手册I2C章节。根据硬件管脚设置可以确认slave addres。可以看到高三位一倍写死,后面4位可以由硬件配置。

2.2、read write 时序

值得注意的是读写中的SLV_PA(外设地址空间),意思就是rxs2448的可以直接访问的IIC地址空间只有0x00-0xff的256-byte的地址空间,所有的外设地址空间的访问都要通过I2C的内部地址空间间接访问,懂得这个道理下面就好实现读取数据了。

接下来看读写的时序,这里可以看到我们在读写的时候,需要设置外设地址(peripheral Address)。

例如读取我们读取寄存器为0的数据。我们首先要做的是把寄存器0写入I2C的内部地址空间0x10-0x13,然后再读0x14-0x17就把寄存器0中的数据读出来了。(具体的寄存器和I2C的内部地址含义需要看手册)。

这样下来read 寄存器的操作流程就是

write : slave Address 0x10 Reg(0ffset)

write :slave Address  0x14

read:buff(即为Reg 0的值)。读实现的代码段。写的操作流程与读类似,在此不再赘述。

static ssize_t cps1848_eeprom_read( struct i2c_client *client,char *buf, unsigned offset, size_t count)
{struct i2c_msg msg[3];u8 msgbuf[5];u8 slv_pa[2] = {0x14,0};unsigned long timeout, transfer_time;int status;struct cps1848_data *data = i2c_get_clientdata(client);struct cdns_i2c *id = client->adapter->algo_data;memset(msg, 0, sizeof(msg));msgbuf[0] = 0x10;msgbuf[1] = (u8)(offset & 0xff);msgbuf[2] = (u8)((offset >> 8) & 0xff);msgbuf[3] = (u8)((offset >> 16) & 0xff);msg[0].addr = client->addr;msg[0].buf  = msgbuf;msg[0].len  = 5;msg[1].addr = client->addr;msg[1].buf = slv_pa;msg[1].len = 1;msg[2].addr = client->addr;msg[2].flags = I2C_M_RD;msg[2].buf = buf;msg[2].len = count;/** Reads fail if the previous write didn't complete yet. We may* loop a few times until this one succeeds, waiting at least* long enough for one entire page write to work.*/timeout = jiffies + msecs_to_jiffies(read_timeout);do {transfer_time = jiffies;status = i2c_transfer(client->adapter, msg, 2);if (status == 3)return count;/* REVISIT: at HZ=100, this is sloooow */msleep(1);} while (time_before(transfer_time, timeout));return -ETIMEDOUT;}

Zynq-Linux移植学习-通过IIC访问RXS2448交换芯片相关推荐

  1. zc706开发板的linux移植,Zynq—Linux移植学习笔记(十)

    在zynq开发板zc706上,网络通路由下面三个设备组成: 其中zynq负责对phy进行配置,当zynq上的网络控制器以及phy完成正确配置时,能够看到RJ45上面的黄灯亮,此时表明链路已经通了.如果 ...

  2. zynq linux找不到flash,Zynq—Linux移植学习笔记(十八):Zynq下NOR_FLASH挂载文件系统...

    1. 背景介绍 板子上的zynq通过emc外接一块nor flash,地址分配如下: Nor flash的起始地址为0x80000000.当zynq上运行Linux后可以通过对该地址起始的区域进行擦除 ...

  3. ZYNQ LINUX开发笔记——内存直接访问

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ LINUX开发笔记--内存直接访问 LINUX 脚本方式 C APP模式 LINUX 脚本方式 写内存: devmem 0x ...

  4. ZYNQ Linux 移植:包含petalinux移植和手动移植debian9

    问题: 1.ZYNQ Linux启动流程: BOOTROM→FSBL→Uboot→Kernel→RootFS 环境: 虚拟机ubuntu16.04 petalinux2018.3 vivado2018 ...

  5. linux移植1.3寸oled屏幕,芯片SH1106

    之前移植过MPU6050(I2C协议)和0.96寸oled(SPI协议),这次移植一个I2C协议的oled. I2C的介绍 可以参考上一篇I2C的文章: linux移植MPU6050的I2C驱动 -- ...

  6. zedboard移植linux内核,[干货]手把手教你用Zedboard学习Linux移植和驱动开发

    作者:殷建飞 本文是昨天发的文章<龙芯杯CPU设计竞赛与ZYNQ设计流程介绍>接续部分.重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种. 部分硬件设计 ...

  7. linux can总线接收数据串口打包上传_「干货」手把手教你用Zedboard学习Linux移植和驱动开发...

    本文是昨天发的文章<龙芯杯CPU设计竞赛与ZYNQ设计流程介绍>接续部分.重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种. 部分硬件设计中需要CPU完 ...

  8. linux移植嵌入式系统,嵌入式系统学习——S3C2451之Linux移植步骤

    Linux内核裁剪.根文件系统制作.系统烧录 环境: Redhat5 Mini2451开发板 linux-3.6内核 这几天学习了linux在mini2451开发板上的移植,以及后续的简单字符设备.混 ...

  9. 【工作笔记】zynq 7035移植linux系列1——linux环境的搭建和移植

    [详细步骤] 方式1:利用petalinux定制linux环境,并从SD卡启动 (1)在windows下利用vivado进行FPGA部分的硬件开发,编译生成.bit文件,并导出硬件信息.hdf文件,该 ...

最新文章

  1. LILY 英语携手神策数据 数据赋能少儿英语学习创新体验
  2. idea 开发spark 程序代码
  3. Javascript创建对象几种方法解析
  4. [学习笔记] JavaScript 检测数组
  5. Bailian2887 能被3,5,7整除的数【入门】
  6. YOLOv4/v5的创新点汇总!
  7. docker-compose+postsql多容器部署django-vue项目
  8. 如何一站式高效管理固定资产?
  9. win7科学计算机不支持,新CPU不支持Win7怎么回事?新一代主板装不了Win7的解决办法...
  10. 基于Qt的学生信息管理系统
  11. python中的wait和notify
  12. linux filesystem not open,建立物理卷报错Can't open /dev/sdb5 exclusively. Mounted filesystem的问题解决过程记录...
  13. Kerberos安装及使用2(Kerberos服务器KDC安装及配置)
  14. 音乐网站制作之音乐播放
  15. 微信小程序账号注册流程
  16. android 版本升级 解析包出问题怎么解决方案,Android 7.0解析包时出现问题 的解决方案(应用内更新)...
  17. nexmo 验证码的使用
  18. 前端开发遇到 STATUS_BREAKPOINT
  19. 为啥翻唱的也特别好听呢,听J Fla 的 despacito
  20. linux下iptable防火墙的配置

热门文章

  1. mysql毕业生信息管理系统,本科毕业设计信息管理系统的设计(Struts,MySQL)
  2. html中列表前的序号用带圆圈的数字表示及存在的问题
  3. 群晖 NAS 与 百度云网盘互相进行同步
  4. 利用DHT网络,爬取bt种子。
  5. linux内核带rt,Ubuntu18.04安装PREEMPT_RT实时内核
  6. ZYNQ从放弃到入门(八)-PS和PL交互
  7. linux -- 嵌入式2.6.37wifi-vnt6656移植驱动
  8. ABBYY FineReader Pro for Mac有哪些特性(下)
  9. 股权和更高的薪资应该选那个呢?
  10. C++ 实现对选手、评委的计分