4466|5

81

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

I2C通信,发一次后无法再次发送。代码贴上,多多找问题! [复制链接]

SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C1);  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
GPIOPinConfigure(GPIO_PG0_I2C1SCL);
GPIOPinConfigure(GPIO_PG1_I2C1SDA);  
GPIOPinTypeI2C(GPIO_PORTG_BASE,  GPIO_PIN_1);
GPIOPinTypeI2CSCL(GPIO_PORTG_BASE, GPIO_PIN_0);
I2CMasterEnable(I2C1_BASE);
IntEnable(I2C_INT_MASTER);
I2CMasterIntEnable(I2C1_BASE);
IntMasterEnable();
I2CMasterInitExpClk(I2C1_BASE, 40000000, false);
I2CMasterSlaveAddrSet(I2C1_BASE, SLAVE_ADDRESS,false);
I2CMasterDataPut(I2C1_BASE, WRITE_ADDRESS);
I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);
while(I2CMasterBusy(I2C1_BASE));
for(i = 0;i < DataNum;i++ )
        {
                I2CMasterDataPut(I2C1_BASE, DataTx[i]);
                i == DataNum - 1 ?
                I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH):
                I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);
               
                while(I2CMasterBusy(I2C1_BASE));//到这里卡死
        }
        怎么回事啊??一直主机忙状态。

最新回复

本帖最后由 nt52241930 于 2016-11-21 14:30 编辑 不曉得,您 i2c具體功能如何,但 這段程式,似乎有點問題 for(i = 0;i < DataNum;i++ )          {                  I2CMasterDataPut(I2C1_BASE, DataTx);                  i == DataNum - 1 ?                  I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH):                  I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);                                    while(I2CMasterBusy(I2C1_BASE));//到这里卡死         } 一開始 I2C_MASTER_CMD_BURST_SEND_START 沒問題 ,到 I2CMasterDataPut(I2C1_BASE, DataTx); 後會發一筆 for裡面一開始就給予I2C_MASTER_CMD_BURST_SEND_FINISH 此時i2c總線已經結束 這時您又給予I2C_MASTER_CMD_BURST_SEND_CONT ,沒有start,此時i2c總線已無作用 大概是這樣,您參考下  详情 回复 发表于 2016-11-21 14:18
 
点赞 关注

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

推荐
 
以前遇到类似问题,检测一下硬件电路,去掉上拉电阻试试
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
谁给解决,我把金币给他
 
 
 

回复

1976

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
M4没有搞过,不过楼主知道是在那个判断的死循环的地方出问题,那可以着重分析一下这个死循环为什么过不去的原因,应该能解决,帮顶一下了
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
请问你tm4c1294I2C的问题解决了吗,,我刚上手这块板子,也出现了这个问题
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(中级)

6
 
本帖最后由 nt52241930 于 2016-11-21 14:30 编辑

不曉得,您 i2c具體功能如何,但 這段程式,似乎有點問題
for(i = 0;i < DataNum;i++ )
         {
                 I2CMasterDataPut(I2C1_BASE, DataTx);
                 i == DataNum - 1 ?
                 I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH):
                 I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);
                 
                 while(I2CMasterBusy(I2C1_BASE));//到这里卡死
        }

一開始 I2C_MASTER_CMD_BURST_SEND_START 沒問題 ,到 I2CMasterDataPut(I2C1_BASE, DataTx);
後會發一筆
for裡面一開始就給予I2C_MASTER_CMD_BURST_SEND_FINISH 此時i2c總線已經結束
這時您又給予I2C_MASTER_CMD_BURST_SEND_CONT ,沒有start,此時i2c總線已無作用

大概是這樣,您參考下
 
 
 

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

查找数据手册?

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
快速回复 返回顶部 返回列表