我正在尝试将我的Tiva C系列与Sparkfun分线板,IMU数字组合板 – 6自由度ITG3200 / ADXL345连接,我遇到了I2C接口问题。
目前这是我的代码:
#include #include #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" #include "driverlib/i2c.h" uint8_t SLAVE_ADDRESS = 0x68; uint32_t first_byte, second_byte, temperature, result; void i2c_setup(void) { //Enable the I2C Module SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C2); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); //Wait at least 5 clock cycles SysCtlDelay(2); //Configure SDA and SCL GPIOPinConfigure(GPIO_PE4_I2C2SCL); GPIOPinConfigure(GPIO_PE5_I2C2SDA); //Wait at least 5 clock cycles SysCtlDelay(2); //Set PE4 as SCL GPIOPinTypeI2CSCL(GPIO_PORTE_BASE, GPIO_PIN_4); //Set PE5 as SDA GPIOPinTypeI2C(GPIO_PORTE_BASE, GPIO_PIN_5); //Configure Master, I2CMasterInitExpClk(I2C2_BASE, SysCtlClockGet(), false); } uint32_t i2c_read() { I2CMasterSlaveAddrSet(I2C2_BASE, SLAVE_ADDRESS, false); I2CMasterDataPut(I2C2_BASE, 0x1A); I2CMasterControl(I2C2_BASE, I2C_MASTER_CMD_SINGLE_SEND); while(I2CMasterBusBusy(I2C2_BASE)); //Loop until the bus is no longer busy I2CMasterSlaveAddrSet(I2C2_BASE, SLAVE_ADDRESS, true ); I2CMasterControl(I2C2_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE); while(I2CMasterBusBusy(I2C2_BASE)); //Loop until the bus is no longer busy first_byte = I2CMasterDataGet(I2C2_BASE); return first_byte; } void setup() { Serial.begin(9600); i2c_setup(); } void loop() { int test = i2c_read(); Serial.println(test); delay(1000); }
我正在使用Energia测试我的程序,当我尝试从指定的寄存器读取时,我得到相同的结果,无论我选择哪个寄存器,结果总是十进制229(这是加速度计的设备地址)。
有人可以指出我正确的方向,我已经看了很长一段时间我的代码仍然不知道什么是错的…
谢谢!
我浏览了你的代码,一切似乎都好。 显然,如果你得到答复,有些事情是正确的。 但就像马丁所说的那样,在不存在的情况下解决问题有点困难。 您可以尝试使用其他I2C命令之一来代替写入0x1A吗? 另外如果跳线连接到VDD,你的地址应该是0x69(十进制105),你确定它是0x68吗?
我查看了sparkfuns网站上的文档,他们提供了以下命令列表。
char WHO_AM_I = 0x00; char SMPLRT_DIV= 0x15; char DLPF_FS = 0x16; char GYRO_XOUT_H = 0x1D; char GYRO_XOUT_L = 0x1E; char GYRO_YOUT_H = 0x1F; char GYRO_YOUT_L = 0x20; char GYRO_ZOUT_H = 0x21; char GYRO_ZOUT_L = 0x22;
GL希望一切顺利。 一直意思是买我自己玩的所以请留意我!
以上就是c/c++开发分享TIva C系列I2C接口问题相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522890.html