3177|6

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

TMS570LS1224的 I2C的使用 [复制链接]

最近使用到MCP4725,这是一款12bit的dac芯片,MCU通过I2C发送控制信息控制dac的电平输出,输出范围取决于VCC,具体资料查看参考手册(包含地址信息、控制字、和帧信息等)。

在HAL配置如下:

代码如下:

 i2cREG1->MDR |= (uint32)I2C_STOP_COND;
 i2cREG1->MDR |= 0x2400;//I2C START

 i2cSendByte(i2cREG1,0x60);//COMFIG

i2cSendByte(i2cREG1,0x50);

  i2cSendByte(i2cREG1,0x00);//SEND DATA
   i2cREG1->MDR |= (uint32)I2C_STOP_COND;//I2C END

需要注意的是,在程序中7位从机地址通过 i2cSetSlaveAdd 函数设置,通过设置输入或输出模式自动补全读写位,在数据的第一个字节发送。可以通过示波器查看发送波形,可以很明显的看到在第九个时序sda信号线上出现一个脉冲信号,这就是应答信号,只有收到应答信号I2C才会将下一个字节信息发送。

MCP4725中文.pdf

1.61 MB, 下载次数: 9

main.txt

4.3 KB, 下载次数: 16

最新回复

谢谢分享,   详情 回复 发表于 2020-3-27 14:40
 
点赞 关注

回复
举报

12

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

i2cSetSlaveAdd(i2cREG1, 0x60);

           i2cSetDirection(i2cREG1, I2C_TRANSMITTER);

           i2cSetStop(i2cREG1);

           i2cREG1->MDR |= 0x2400;

           i2cSendByte(i2cREG1,0x60);
           ////  C2  C1  C0        PD1  PD0
           ///   0   1   1         0    0 
           ///   写入寄存器与EEPROM    正常关断模式

           i2cSendByte(i2cREG1,0x7f);

           i2cSendByte(i2cREG1,0xf0);


           i2cSetStop(i2cREG1);
主要程序如上,比txt文档简洁,配合4725文档使用更佳。

 
 

回复

2618

帖子

0

TA的资源

纯净的硅(高级)

板凳
 

谢谢分享,好经典啊。

 
 
 

回复

19

帖子

2

TA的资源

一粒金砂(中级)

4
 

你好想问下 我用的函数是i2cSend

然后一直卡在while ((i2c->STR & (uint32)I2C_TX_INT) == 0U)这里了

不知道什么原因呢

 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

5
 
三不沾 发表于 2020-1-7 10:52 你好想问下 我用的函数是i2cSend 然后一直卡在while ((i2c->STR & (uint32)I2C_TX_INT) == 0U) ...

复用这里您设置了吗?如果设置了可以调试里面看一下寄存器参数,卡在这里应该是没有收到ACK信号。

不好意思很久没有登录,回答有点晚,希望您已经解决问题了。

 
 
 

回复

2618

帖子

0

TA的资源

纯净的硅(高级)

6
 

谢谢分享,

 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

7
 
三不沾 发表于 2020-1-7 10:52 你好想问下 我用的函数是i2cSend 然后一直卡在while ((i2c->STR & (uint32)I2C_TX_INT) == 0U) ...

再次回复,因为I2C_TX_INT = 16(可以查看定义),所以while()的意义在于查看i2c->STR第四位 即TXRDY位的值,通过查看数据手册,TXRDY = 1,代表数据发送寄存器I2CDXR为空(上一个数据已发送),=0代表 上一个数据仍未发送。所以当前数据无法发送。

总结:卡在这里的原因是上一个数据未发送,所以您需要检查从机地址、发送模式等,具体参考HAL->help->example->您使用的芯片文件夹->i2c*.c。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
ADI 有奖直播报名中~
直播时间:3月27日(周四) 上午10:00-11:30
直播主题:易于驱动SAR型ADC的原理、优点及应用介绍
好礼等你拿~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表