社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 2313|回复: 11

[求助] 新手TM4C123GH6PM的软件I2C求教

[复制链接]

14

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-4-1 10:21:55 | 显示全部楼层 |阅读模式
    各位大神,我在用TM4C123GH6pm读MPU6050时用到了I2C协议,可是这块板子目前貌似内有类似 的教程,还请个位大神不吝指教。谢谢!!
此帖出自最爱TI M4论坛


回复

使用道具 举报

183

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-4-1 10:40:25 | 显示全部楼层
软件I2C不就是弄弄GPIO ,仿照51的程序写一个就行


回复

使用道具 举报

5218

TA的帖子

454

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2015-4-1 10:48:21 | 显示全部楼层
你看TI提供的例子,如何用I2C接口资源


回复

使用道具 举报

14

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-1 13:24:12 | 显示全部楼层
蓝雨夜 发表于 2015-4-1 10:48
你看TI提供的例子,如何用I2C接口资源

请问哪里有I2C的例子呀,找了好久也没找到,还望您能指点迷津,或者给个程序也行,谢谢!现在比较急

点评

去TI下 TivaWare_C_Series-2.1.0.12573\sensorlib [attachimg]193137[/attachimg]  详情 回复 发表于 2015-4-1 14:01


回复

使用道具 举报

14

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-1 13:25:56 | 显示全部楼层
Linchpin 发表于 2015-4-1 10:40
软件I2C不就是弄弄GPIO ,仿照51的程序写一个就行

可能我说错了,我想用M4的库函数实现I2C读数,不是去模拟I2C协议,请问你有这方面的编程经验吗?

点评

那是硬件I2C,,硬件I2C我弄过,,但还是比较难弄的,我花了一天半才完全搞明白。。有什么不懂的可以问我  详情 回复 发表于 2015-4-1 23:04


回复

使用道具 举报

5218

TA的帖子

454

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2015-4-1 14:01:53 | 显示全部楼层
einspyon 发表于 2015-4-1 13:24
请问哪里有I2C的例子呀,找了好久也没找到,还望您能指点迷津,或者给个程序也行,谢谢!现在比较急

去TI下

TivaWare_C_Series-2.1.0.12573\sensorlib



111.PNG

点评

好像有点难看的懂, 但还是非常感谢  详情 回复 发表于 2015-4-3 14:52


回复

使用道具 举报

183

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-4-1 23:04:38 | 显示全部楼层
einspyon 发表于 2015-4-1 13:25
可能我说错了,我想用M4的库函数实现I2C读数,不是去模拟I2C协议,请问你有这方面的编程经验吗?

那是硬件I2C,,硬件I2C我弄过,,但还是比较难弄的,我花了一天半才完全搞明白。。有什么不懂的可以问我


回复

使用道具 举报

14

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-3 14:48:26 | 显示全部楼层
Linchpin 发表于 2015-4-1 23:04
那是硬件I2C,,硬件I2C我弄过,,但还是比较难弄的,我花了一天半才完全搞明白。。有什么不懂的可以问我

我现在在读MPU6050,下面是我向MPU6050的内部某个寄存器写入一个字节的数据,麻烦帮我看下有没有问题,谢谢,谢谢!


void I2C_write(unsigned char reg_address, unsigned char data)

{



        I2CMasterSlaveAddrSet(I2C1_BASE, slave_address, false);   //  false代表主模块发送,从模块接收



        I2CMasterDataPut(I2C1_BASE, reg_address);        //  发送寄存器地址

    I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);

    while(I2CMasterBusy(I2C1_BASE));



        I2CMasterDataPut(I2C1_BASE, data);               // 发送数据

        I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);

    while(I2CMasterBusy(I2C1_BASE));



        I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_STOP);

    while(I2CMasterBusy(I2C1_BASE));



}

点评

你这个读取I2C的程序完全正确,没有问题!! 可能是其它方面出的问题,你再好好找找  详情 回复 发表于 2015-4-4 23:10
现在我也很头疼,还没搞定呢!  详情 回复 发表于 2015-4-4 17:16
你这个实现没?你能把你的SDA,SCL和模块时钟这三个的配置操作代码上传不?刚学,各种不确定,求带  详情 回复 发表于 2015-4-4 14:35


回复

使用道具 举报

14

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-3 14:52:56 | 显示全部楼层
蓝雨夜 发表于 2015-4-1 14:01
去TI下

TivaWare_C_Series-2.1.0.12573\sensorlib

好像有点难看的懂, 但还是非常感谢


回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-4-4 14:35:53 | 显示全部楼层
einspyon 发表于 2015-4-3 14:48
我现在在读MPU6050,下面是我向MPU6050的内部某个寄存器写入一个字节的数据,麻烦帮我看下有没有问题,谢谢,谢谢!


void I2C_write(unsigned char reg_address, unsigned char data)

{



        I2CMasterSlaveAddrSet(I2C1_BASE, slave_address, false);   //  false代表主模块发送,从模块接收



        I2CMasterDataPut(I2C1_BASE, reg_address);        //  发送寄存器地址

    I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);

    while(I2CMasterBusy(I2C1_BASE));



        I2CMasterDataPut(I2C1_BASE, data);               // 发送数据

        I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);

    while(I2CMasterBusy(I2C1_BASE));



        I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_STOP);

    while(I2CMasterBusy(I2C1_BASE));



}

你这个实现没?你能把你的SDA,SCL和模块时钟这三个的配置操作代码上传不?刚学,各种不确定,求带


回复

使用道具 举报

14

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-4 17:16:00 | 显示全部楼层
einspyon 发表于 2015-4-3 14:48
我现在在读MPU6050,下面是我向MPU6050的内部某个寄存器写入一个字节的数据,麻烦帮我看下有没有问题,谢谢,谢谢!


void I2C_write(unsigned char reg_address, unsigned char data)

{



        I2CMasterSlaveAddrSet(I2C1_BASE, slave_address, false);   //  false代表主模块发送,从模块接收



        I2CMasterDataPut(I2C1_BASE, reg_address);        //  发送寄存器地址

    I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);

    while(I2CMasterBusy(I2C1_BASE));



        I2CMasterDataPut(I2C1_BASE, data);               // 发送数据

        I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);

    while(I2CMasterBusy(I2C1_BASE));



        I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_STOP);

    while(I2CMasterBusy(I2C1_BASE));



}

现在我也很头疼,还没搞定呢!


回复

使用道具 举报

183

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-4-4 23:10:51 | 显示全部楼层
einspyon 发表于 2015-4-3 14:48
我现在在读MPU6050,下面是我向MPU6050的内部某个寄存器写入一个字节的数据,麻烦帮我看下有没有问题,谢谢,谢谢!


void I2C_write(unsigned char reg_address, unsigned char data)

{



        I2CMasterSlaveAddrSet(I2C1_BASE, slave_address, false);   //  false代表主模块发送,从模块接收



        I2CMasterDataPut(I2C1_BASE, reg_address);        //  发送寄存器地址

    I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);

    while(I2CMasterBusy(I2C1_BASE));



        I2CMasterDataPut(I2C1_BASE, data);               // 发送数据

        I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);

    while(I2CMasterBusy(I2C1_BASE));



        I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_STOP);

    while(I2CMasterBusy(I2C1_BASE));



}

你这个读取I2C的程序完全正确,没有问题!!   可能是其它方面出的问题,你再好好找找


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-12-13 07:48 , Processed in 0.456786 second(s), 19 queries , Redis On.

快速回复 返回顶部 返回列表