8799|13

6892

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

根据我利用LM3S8962设计产品开发的需要,今天将研读LM3S8962 I2C英文资料心得分享如下 [复制链接]

I2C 内部模块图如下:

从上面模块图可以看出,LM3S8962支持主从两种模式,对应外部I2C总线,本产品设计中利用LM3S8962的I2C模块对数模转换芯片DAC8571进行数目转换。因此本设计中利用I2C 主模式访问外部芯片。问题来了: 1. 怎样选择I2C主从模式?2. I2C模式支持速率多少?
    上面的两个问题从I2C 模块相应的资料可以找到。第一个问题,相关英文资料如下:


对I2CMCR 寄存器写一个值为0X0000.0020 即可。第二个问题怎么设置I2C模块的速度,通过对I2CMTPR寄存器设置正确值就可以设置I2C 工作速度为100K,

如果要正确使用,还有一个问题要解决,正确设置从设备的地址,关于这点,英文资料如下论述:

对I2CMSA 寄存器写0X0000.0076的值,则从地址就是0X3B; 因为I2CMSA寄存器的第7位到第一位对应从地址A6~A0。
还有一个关键的问题,I2C总线是OPEN DRAIN 漏极开路,硬件设计上,要对I2C总线上拉,英文资料证明如下:
   
最后一个问题,怎样发送,怎样判读发送完成?经过研读资料,说明如下:

其实就是一句话通过设置I2CMCS 控制器相关位置,发送一个数据,通过轮训I2CMCS一个寄存器的一个位可以查询完成。
说白了,就是FPGA设置中发送使能的设置,发送完成置一个完成的标志。如果FPGA程序规划得好,最后调试也可以像ASIC芯片一样方面!

最新回复

你的程序还在不在啊??,M4的API 的i2c.h文件的FIFO及DMA发送什么的必须的吗,发数据都要把这配置好作为存储吗   详情 回复 发表于 2015-4-4 15:12
 
点赞 关注(1)
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!

回复
举报

2606

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
楼主写得不错,学习思路,支持原创,以后用的时候再过来看看。
 
个人签名工程 = 数学+物理+经济
 

回复

2641

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
讲的很不错,谢谢分享
 
 
 

回复

1412

帖子

15

TA的资源

版主

4
 
不错,如果能否发点实例代码就更好了。。。
 
个人签名https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
对于很多I2C设备,除了需要设置设备本身的地址之外,还学设置设备内部寄存器的地址(如24C08,PCF8563等)。这些内部寄存器地址因该如何设置呢?请楼主明示~感激不尽~
 
 
 

回复

1万

帖子

16

TA的资源

版主

6
 

;P
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

85

帖子

0

TA的资源

一粒金砂(中级)

7
 
留着,待看
谢谢!!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(高级)

8
 

有个问题

I2C没有FIFO,是否意味在进行I2C通讯时,MCU不能进行其他操作?
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(高级)

9
 

回复 8楼 heich_tech 的帖子

“有个问题
I2C没有FIFO,是否意味在进行I2C通讯时,MCU不能进行其他操作? ”
同问。。。  如果传输大量数据时MCU岂不是做不了别的事了?  有没有什么解决方案?  谢谢!
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

10
 
I2C也支持中断访问的。楼上所说数据量肯定有一定限度的,不能超过LM3S8962的速度的。否则当然LM3S8962就完成不了。
 
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 

回复

89

帖子

0

TA的资源

一粒金砂(高级)

11
 

回复 5楼 lycsqq 的帖子

读取I2C总线上某些设备的具体寄存器地址,需要一个特殊的过程叫做dummy write, 也就是多发一地址让读取指针指向具体寄存器的位置 。
具体操作顺序如下:
1.发起始状态
2.发7位从地址+读/写位(这里用写,如果设备地址是0xA0,这里就用A0)
3.发具体寄存器地址(也就是你想读的I2C设备的内部地址),和上面发地址用的同一个函数
     // 上面的过程叫做dummy write
4.发送repeated start
5.发7位从地址+读/写位(这里用读,如果设备地址是0xA0,这里就用A1)
6.从设备开始发数据,主设备ACK,如果收到最后一字节,主设备发送NACK
7.主设备发送stop结束传输

写I2C设备具体寄存器的时候跟普通的写操作很像,只是开始写数据时第一字节是从地址,也就是你想写到的那个寄存器的地址

点评

你的程序还在不在啊??,M4的API 的i2c.h文件的FIFO及DMA发送什么的必须的吗,发数据都要把这配置好作为存储吗  详情 回复 发表于 2015-4-4 15:12
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

12
 
I2C mark
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

13
 
神奇的IIC。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

14
 
tekkon 发表于 2011-11-1 22:32
读取I2C总线上某些设备的具体寄存器地址,需要一个特殊的过程叫做dummy write, 也就是多发一地址让读取指针指向具体寄存器的位置 。
具体操作顺序如下:
1.发起始状态
2.发7位从地址+读/写位(这里用写,如果设备地址是0xA0,这里就用A0)
3.发具体寄存器地址(也就是你想读的I2C设备的内部地址),和上面发地址用的同一个函数
     // 上面的过程叫做dummy write
4.发送repeated start
5.发7位从地址+读/写位(这里用读,如果设备地址是0xA0,这里就用A1)
6.从设备开始发数据,主设备ACK,如果收到最后一字节,主设备发送NACK
7.主设备发送stop结束传输

写I2C设备具体寄存器的时候跟普通的写操作很像,只是开始写数据时第一字节是从地址,也就是你想写到的那个寄存器的地址

你的程序还在不在啊??,M4的API 的i2c.h文件的FIFO及DMA发送什么的必须的吗,发数据都要把这配置好作为存储吗
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表