求救,PSOC3,I2C模组主设备发送数据问题。

[复制链接]
 楼主| liuweijie 发表于 2013-7-5 14:02 | 显示全部楼层 |阅读模式
暑假留校做项目,刚接触PSOC3 想用PSOC3测量一个I2C接口的三轴加速度计 型号是淘宝上的GY80九轴加速度模块。

我先测试用I2C写入数据

#include <device.h>
#define ADXL345_Addr (0x53u)
void main()
{
uint8 Status;

I2C_Start();
CyGlobalIntEnable;  /* Uncomment this line to enable global interrupts. */
    for(;;)
    {
       Status=I2C_MasterSendStart(ADXL345_Addr,0);//发送地址和写入标记
       if(Status==I2C_MSTR_NO_ERROR)
       {
       Status=I2C_MasterWriteByte(0x32);//写入
       if(Status==I2C_MSTR_NO_ERROR)
       {
            led_Write(1);
       }
       }
      
    }
}

led引脚连的是一个LED灯,按理说写入成功的话,应该就会进入第二个if语句,让LED亮,可是就是不亮,:Q也就是说写入失败,求指点。

泪奔了:'(
kk5290122 发表于 2013-7-6 07:44 | 显示全部楼层
lz确定你的I2C模块配置好了吗??
 楼主| liuweijie 发表于 2013-7-7 18:32 | 显示全部楼层
kk5290122 发表于 2013-7-6 07:44
lz确定你的I2C模块配置好了吗??

设置对了,我发现问题了,我之前 SCL SDA用的是P1_0和P1_1引脚,后来发现P12_0和P12_1有专门的SCL和SDA标注,然后就改用这个引脚就可以了。
kk5290122 发表于 2013-7-7 19:14 | 显示全部楼层
嗯,就是它里面的有些模块是有指定引脚的,用了相应功能就要分配指定引脚。
jxin 发表于 2013-7-8 09:43 | 显示全部楼层
这个可以参照I2C模块的datasheet中有关模块参数的定义:
Pins
This parameter determines which type of pins to use for SDA and SCL signal connections. There are three possible values: Any, I2C0, and I2C1. The default is Any.

Any means general-purpose I/O (GPIO or SIO). If Enable wakeup from Sleep Mode is not required, use Any for SDA and SCL. If Enable wakeup from Sleep Mode is required, use I2C0 or I2C1; using either I2C0 or I2C1 allows you to configure the device for wakeup on I2C address match.
August-creator 发表于 2014-3-31 18:41 | 显示全部楼层
您好!估计你把地址配置错了,在I2C_MasterSendStart(address,read/write);中address是器件的7位地址,不是器件的8位读写地址,因为这个函数它根据read/write的标示来自动生成读/写地址,接下来你可以直接读取相关寄存器就可以了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部