搜索
bottom↓
回复: 13

Cortex新手之五   哪位在LM3S系列上成功搞过I2C的?

[复制链接]

出0入0汤圆

发表于 2010-1-29 00:28:02 | 显示全部楼层 |阅读模式
使用LM3S的固件库
我弄了一个简单的DS1721, 可是怎么都无法读到数据, I2CMasterErr() 确显示没有错误……

我用的主要函数:

void init_i2c()
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C);
    I2CMasterInitExpClk(I2C_MASTER_BASE, SysCtlClockGet(), 0);
}
void init_ds1721()
{
    I2CMasterSlaveAddrSet(I2C_MASTER_BASE, 0x48, 0);
    I2CMasterDataPut(I2C_MASTER_BASE, 0x51);
    I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND);
    UARTprintf("(0) i2c master error: %d\n", I2CMasterErr(I2C_MASTER_BASE));
}

unsigned int i2c_temp_read()
{
    I2CMasterSlaveAddrSet(I2C_MASTER_BASE, 0x48, 0);
    I2CMasterDataPut(I2C_MASTER_BASE, 0xaa);
    I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND);
    UARTprintf("(1) i2c master error: %d\n", I2CMasterErr(I2C_MASTER_BASE));


    I2CMasterSlaveAddrSet(I2C_MASTER_BASE, 0x48, 1);
    I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE);
    UARTprintf("(2) i2c master error: %d\n", I2CMasterErr(I2C_MASTER_BASE));
    UARTprintf("(3) data: %d\n", (int)I2CMasterDataGet(I2C_MASTER_BASE));

    UARTprintf("\n");
}


不知道哪位可以提点一下……
谢谢了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-1-29 00:30:01 | 显示全部楼层
串口的相关回显为:

(0) i2c master error: 0
(1) i2c master error: 0
(2) i2c master error: 0
(3) data: 0

出0入0汤圆

 楼主| 发表于 2010-1-29 01:14:59 | 显示全部楼层
好像是i2c模块没有初始化好

void init_i2c()
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    GPIOPinTypeI2C(I2C0SCL_PORT, I2C0SCL_PIN);
    GPIOPinTypeI2C(I2C0SDA_PORT, I2C0SDA_PIN);

    I2CMasterInitExpClk(I2C_MASTER_BASE, SysCtlClockGet(), 0);
}

这样以后, 能返回一些东西了, 不过看样子还有别的问题, 数据不对……继续调试……

出0入0汤圆

 楼主| 发表于 2010-1-29 01:30:20 | 显示全部楼层
嘎嘎
基本搞定

原来是i2c操作过程中需要一定延时(或者使用中断方式更好)
现在可以在串口上看到两组温度计的度数了。
有了这个基础, 睡觉起来后再研究研究这个芯片的其它协议和I2C的固件库, 日后再给fpga写个模块, iic就差不多学成了吧?


(原文件名:Screenshot.png)

出0入0汤圆

发表于 2010-1-29 08:31:18 | 显示全部楼层
回复【3楼】chopin1998 超级用户
嘎嘎
基本搞定
原来是i2c操作过程中需要一定延时(或者使用中断方式更好)
现在可以在串口上看到两组温度计的度数了。
有了这个基础, 睡觉起来后再研究研究这个芯片的其它协议和I2C的固件库, 日后再给fpga写个模块, iic就差不多学成了吧?


(原文件名:Screenshot.png)
引用图片

-----------------------------------------------------------------------

楼上这个用的什么开发环境呀,看起来很华丽的样子

出0入0汤圆

 楼主| 发表于 2010-1-29 09:03:50 | 显示全部楼层
这也叫华丽?

LinuX X主流的集成桌面环境中, 以"不华丽"为特色之一的 XFce4

出0入0汤圆

 楼主| 发表于 2010-1-29 15:40:30 | 显示全部楼层
传一个完整的代码

很烂

点击此处下载 ourdev_530503.txt(文件大小:5K) (原文件名:hello.c.txt)

出0入0汤圆

 楼主| 发表于 2010-1-31 15:19:28 | 显示全部楼层

(原文件名:IMG_5163.JPG)

上个图

出0入0汤圆

发表于 2010-1-31 15:26:28 | 显示全部楼层
jh

出0入0汤圆

 楼主| 发表于 2010-1-31 15:27:54 | 显示全部楼层
回复【8楼】sdmcu51  
jh
-----------------------------------------------------------------------

jh 算啥米意思?

出0入0汤圆

发表于 2010-2-2 10:40:42 | 显示全部楼层
开发环境应该是 EMacs :)

出0入0汤圆

 楼主| 发表于 2010-2-4 11:54:31 | 显示全部楼层
回复【10楼】hugeice  戬
开发环境应该是 EMacs :)

-----------------------------------------------------------------------

恩 emacs



今天调试CPLD i2c slave成功, 用cpld做了一个i2c的IO扩展。
这下并口多多了啦!

出0入0汤圆

发表于 2010-12-10 15:40:03 | 显示全部楼层
邪门啦,用LM3S9b90对着FM24CL64操作,不行啊!看到有输出的波形,但是看不到芯片的响应,怪啦!

出0入0汤圆

发表于 2010-12-10 23:22:24 | 显示全部楼层
回复【12楼】zxhwww
-----------------------------------------------------------------------

对于LM3S9XXX系列的芯片一定要对IO进行指定配置,因为9000系列IO功能比较多,所以要用HWREG寄存器进行配置IO,否则会出现没有响应,我在用LM3S9XXX做项目的初期就碰见这些无响应的问题,后来看到TI官网的论坛,里面的高级工程师回答的,让我顿悟,接着就解决了一切问题。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 01:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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