OpenRisc入门(19) or1200下linux的i2c(一)

这篇blog介绍I2C的学习了,首先要在我们的or1200_soc上添加进来I2C Controller,到opencores社区上面找到i2c_latest.tar.gz这个工程包。

解压得到如下文件目录:

注意啦,这里的i2c_top.v的顶层文件需要自己编写,因为需要在工程的更顶层将i2c_master_top.v里的输入输出信号组织成三态信号。

[plain] view plaincopyprint

  1. module i2c_top(
  2. //wishbone interfaces
  3. wb_clk_i, wb_rst_i, arst_i,
  4. wb_adr_i, wb_dat_i, wb_dat_o,
  5. wb_we_i, wb_stb_i, wb_cyc_i, wb_ack_o, wb_inta_o,
  6. i2c_scl, i2c_sda
  7. );
  8. // wishbone signals
  9. input wb_clk_i; // master clock input
  10. input wb_rst_i; // synchronous active high reset
  11. input arst_i; // asynchronous reset
  12. input [2:0] wb_adr_i; // lower address bits
  13. input [7:0] wb_dat_i; // databus input
  14. output [7:0] wb_dat_o; // databus output
  15. input wb_we_i; // write enable input
  16. input wb_stb_i; // stobe/core select signal
  17. input wb_cyc_i; // valid bus cycle input
  18. output wb_ack_o; // bus cycle acknowledge output
  19. output wb_inta_o; // interrupt request signal output
  20. // i2c signals
  21. inout i2c_scl; //i2c clock signal
  22. inout i2c_sda; //i2c data signal
  23. i2c_master_top i2c_master_top(
  24. //wishbone interfaces
  25. .wb_clk_i(wb_clk_i),
  26. .wb_rst_i(wb_rst_i),
  27. .arst_i(arst_i),
  28. .wb_adr_i(wb_adr_i),
  29. .wb_dat_i(wb_dat_i),
  30. .wb_dat_o(wb_dat_o),
  31. .wb_we_i(wb_we_i),
  32. .wb_stb_i(wb_stb_i),
  33. .wb_cyc_i(wb_cyc_i),
  34. .wb_ack_o(wb_ack_o),
  35. .wb_inta_o(wb_inta_o),
  36. .scl_pad_i(scl_pad_i),
  37. .scl_pad_o(scl_pad_o),
  38. .scl_padoen_o(scl_padoen_o),
  39. .sda_pad_i(sda_pad_i),
  40. .sda_pad_o(sda_pad_o),
  41. .sda_padoen_o(sda_padoen_o)
  42. );
  43.  
  44. assign i2c_scl = scl_padoen_o 1'bz : scl_pad_o;
  45. assign i2c_sda = sda_padoen_o 1'bz : sda_pad_o;
  46. assign scl_pad_i = i2c_scl;
  47. assign sda_pad_i = i2c_sda;
  48. endmodule
时间: 2024-08-27 20:17:38

OpenRisc入门(19) or1200下linux的i2c(一)的相关文章

OpenRisc入门(20) or1200下linux的i2c(二)

上次记得是基于linux系统自带的i2c-ocores.c文件接口写了简单的测试程序,这次就基于opencores社区上大虾写好的i2c controller总线驱动来做一下分析,这个总线驱动在openrisc-3.1\drivers\i2c\busses目录下~这个总线驱动是基于Richard Herveille编写的i2c-master的ipcore,在opencores社区上可以下到这份RTL的代码,然后打开源码里面的i2c_specs说明文档看看这个ipcores的相关操作. openr

OpenRisc入门(18) or1200下linux简单gpio字符设备驱动

前几次我们把linux给boot通了,这所谓的移植也只是个名头而且,真正的移植有时间可以去看看\arch\openrisc下的移植代码,强调我现在也是在用而已,按我的理解的话不是真正意义的开发. 那就继续先用这吧,好,现在回来<or1200软件环境搭建>的过程来,那时我们在虚拟机cross compile了lrz和lsz文件,这是因为什么,因为现在我们只是boot通了内核,除了UART这个外设之外我们在内核或模块程序中有关于ipcores的驱动,所以,我们想在这个最简单的内核上调试程序的时,至

OpenRisc入门(14) or1200第一个裸机程序

经过前面千辛万苦.爬山涉水.纠结了好久才弄好的环境,现在我们终于可以把FPGA当成个单片机使了,稍微比单片机猛一点,但是绝对比单片机贵一个数量级,FPGA现在能完成由CPU做的事,我们就把它当成一个大价钱买回来的单片机,不过相比于S3C24XX的片子来说,那么贵的一个FPGA板卡跑40M的一个CPU绝对的奢侈,不过仅限于理解和学习嵌入式的过程,管他的. 但是如果是这样呢,把or1200资源优化好,例化两个或者多个CPU,是不是可以做成SMP架构?又或者说现有的产品上有FPGA芯片,但是里面的资源

Kinect for Windows SDK开发入门(十三)语音识别 下

上一篇文章介绍了Kinect中语音识别的基本概念,以及一些语音处理方面的术语.在此基础上使用Kinect麦克风阵列来进行音频录制的例子说明了Kinect中音频处理的核心对象及其配置.本文将继续介绍Kinect中的语音识别,并以两个小例子来展示语音识别中的方向识别和语音命令识别. 1. 使用定向麦克风进行波速追踪(Beam Tracking for a Directional Microphone) 可以使用这4个麦克风来模拟定向麦克风产生的效果,这个过程称之为波束追踪(beam tracking

OpenRisc入门(25) ORPSoC,openrisc相关资料汇总

引言 网络上关于openrisc的资料很多,除了官网之外,还有很多有价值的资料值得借鉴, 但是,这些资料比较分散,查找起来很是不易,为了能方便自己,也方便别人, 本小节就把我遇到的不错的网址或者资料list了一下. 如果哪位还有不错的资料,可以写到评论里面,我会及时的更新本文档,方便更多人查找. 国内我们有一个qq群,可以参与讨论,相互学习与交流: 277505520 一, 本文档link: http://blog.csdn.net/rill_zhen/article/details/88827

网络编程-window下Linux虚拟机的网卡操作

问题描述 window下Linux虚拟机的网卡操作 在window系统下安装Linux虚拟机,在进行网络操作时,是使用Linux内核的TCP/IP协议栈直接发包,还是需要通过虚拟机程序转到window内核,通过window的TCP/IP协议栈发包呢?求大神指导.

vmlinux-vm虚拟机下linux系统如何把文件传到window

问题描述 vm虚拟机下linux系统如何把文件传到window 网上有说用vmtool,我已经装好了vmtools 但是mnt文件夹下又没有hgfs这个文件,那应该怎么办呢 或者有没有其他的办法 求大神给我说说啊谢谢你们了 解决方案 先设置虚拟机共享目录.然后再重新安装vmtools. 解决方案二: 你的虚拟机是什么版本的?我的是9.0.安装好vmtools后,可以直接将文件拖到虚拟机中(反之一样). 解决方案三: 设置虚拟机共享目录,然后重启虚拟机.

linux-双系统下Linux(ubuntu)不能进入windows的NTFS分区之挂载错误问题解决

问题描述 双系统下Linux(ubuntu)不能进入windows的NTFS分区之挂载错误问题解决 安装windows8.1和unbuntu14 后,可以在ubuntu下访问window下的任何磁盘分区,用了一段时间后发现不能访问了,很少让人蛋疼啊,没办法网上自己找到了解决办法,亲测可用,分享一下: 问题: 安装完ubuntu后,不能访问win8里面的分区,访问会提示不能访问XXX ,Error mounting /dev/sda8 at /media/my/XXX: Command-line

嵌入式浏览器移植-机顶盒下linux C对HTTP浏览器集成

问题描述 机顶盒下linux C对HTTP浏览器集成 有谁知道将http浏览器编译成一个静态库,然后给C工程链接调用,当C创建一个浏览器实例时,直接将相关URL页面传给浏览器,并显示出来相关的页面,点击页面后,再调用底层的C接口,如有相知道者,可以支付相关报酬! 解决方案 webkit开源的浏览器,可以包装来调用,你把URL传给他Navigate() 解决方案二: goahead server,一个轻量服务器 解决方案三: webkit能编译成.a或.so库吗?