写入失败

[复制链接]
 楼主| pengf 发表于 2016-6-17 20:24 | 显示全部楼层 |阅读模式
想用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也就是说写入失败
renyaq 发表于 2016-6-17 20:24 | 显示全部楼层
lz确定你的I2C模块配置好了吗??
 楼主| pengf 发表于 2016-6-17 20:25 | 显示全部楼层
设置对了
supernan 发表于 2016-6-17 20:26 | 显示全部楼层
引脚用对了吧
 楼主| pengf 发表于 2016-6-17 20:26 | 显示全部楼层
我发现问题了,我之前 SCL SDA用的是P1_0和P1_1引脚,后来发现P12_0和P12_1有专门的SCL和SDA标注
栩栩如生 发表于 2016-6-17 20:27 | 显示全部楼层
嗯,就是它里面的有些模块是有指定引脚的,用了相应功能就要分配指定引脚。
houcs 发表于 2016-6-17 20:27 | 显示全部楼层
这个可以参照I2C模块的datasheet中有关模块参数的定义:
 楼主| pengf 发表于 2016-6-17 20:27 | 显示全部楼层
哦?在哪儿
houcs 发表于 2016-6-17 20:27 | 显示全部楼层

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.
liuzaiy 发表于 2016-6-17 20:28 | 显示全部楼层
估计你把地址配置错了
yinxiangh 发表于 2016-6-17 20:28 | 显示全部楼层
是的,在I2C_MasterSendStart(address,read/write);中address是器件的7位地址,不是器件的8位读写地址
liuzaiy 发表于 2016-6-17 20:28 | 显示全部楼层
嗯,因为这个函数它根据read/write的标示来自动生成读/写地址,接下来你可以直接读取相关寄存器就可以了!!
 楼主| pengf 发表于 2016-6-17 20:29 | 显示全部楼层
嗯,我知道了,多谢啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

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

718

主题

10129

帖子

3

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