Tag: i2c

I2C不与PCA9685一起使用

我正在使用Atmega168我试图在我的PCA9685伺服驱动程序中使用I2C。 我正在使用这个I2C库: https : //github.com/g4lvanix/I2C-master-lib 我正在尝试使用PCA9685(地址:0x41)启动I2C连接。 由于某种原因,I2C库反弹错误,因为没有发送应答位。 这有什么不对? 我的SDA和SCL引脚连接到10k上拉电阻,它们正确连接到PCA9685。 但它仍然没有用。 它可能是我的PCA9685芯片吗? 我也知道地址是0x41,因为我手动桥接了一个地址连接以分配该地址。 这是我的代码: #include #include #include #include #include “i2c.h” #define SERVO_MIN 1000 #define SERVO_MAX 2000 #define SERVO_MID 1500 #define PCA9685_ADDR 0x40 #define PCA9685_MODE1 0x0 #define LED0_ON_L 0x6 #define LED0_ON_H 0x7 #define LED0_OFF_L 0x8 #define LED0_OFF_H 0x9 #define LED PB0 #define LED_DDR DDRB #define LED_PORT PORTB […]

整合3轴陀螺仪的读数?

所以我用C编写了一个程序,以非常高的数据速率打印3轴陀螺仪的值。 这些值是角速度的瞬时值,如果设备静止,它会随着运动而上升并下降。 我需要它来保持高值并在返回到位置时回到零。 如果我在固定的采样时间内整合这些值,我会实现这个目标吗? 我该如何进行整合? 我是C编程的初学者。 谢谢

TIva C系列I2C接口问题

我正在尝试将我的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 […]

如何转换温度传感器的值?

我正在研究ST Temperature sensor( hts221 ) ,我使用I2C命令与传感器通信。 我从文档中看到如下文字。 enter code here Temperature data are expressed as TEMP_OUT_H & TEMP_OUT_L as 2’s complement numbers. 以下图片是文档中的描述。 从传感器读取的Temperature data如下所示 TEMP_OUT_L is 0xA8 TEMP_OUT_H is 0xFF 如何将TEMP_OUT_L和TEMP_OUT_H的值转换为温度数据? 提前致谢 ?

为什么i2c_smbusfunction不可用? (I2C – 嵌入式Linux)

在开发嵌入式Linux软件以在I2C总线上进行通信时,有许多参考使用i2c_smbus_函数。 当在软件项目中引用i2c_smbus函数(例如i2c_smbus_read_word_data)时, ARM8处理器错误(如“ i2c_smbus_read_word_data”)未在此范围内声明,则在编译时生成。 对以下头文件的研究表明缺少大多数i2c_smbus函数定义。 /usr/arm-linux-gnueabi/include/linux/i2c.h /usr/arm-linux-gnueabi/include/linux/i2c-dev.h 同样在以下参考i2c.h文件中定义了所有i2c_smbus。 如何解决这个问题? 研究参考 在Linux中使用来自用户空间的I2C Linux用户空间的I2C通信 – 第二部分 I2C开发接口

什么使SPI比I2C协议更快

我知道I2C和SPI通信的基本知识。 由于两者都是同步协议。 我想知道是什么让SPI比I2C更快。 如果我没有使用I2C,我们可以使用400kbps,而在SPI中我们也可以达到10mbps。 是因为硬件变化了吗? 在一次采访中我问过这个问题。如果我错了,请告诉我。

为什么我只收到第一个地址字节? (I2C协议)

期望奴隶确认并返回数据,但事实并非如此。 这是我的协议 。 这是我的数据表 数据表提到“从器件将通过首先发送带有MSB的字节来应答。字节0和字节1包含预测值。所有字节都由主器件确认。” 编辑: 源库 另外,仅供我参加Arduino Fio,但我没有inheritanceArduino库。 #include #include #include #include #include #define LED PB5 #define I2C_READ 0x5A char buffer[1]; //char data[9]; uint16_t val = 0; uint8_t status = 0; void getVal() { if(i2c_start(I2C_READ)) { uart_puts(“Start “); val = ((uint8_t)i2c_read_ack())<<8; val |= i2c_read_ack(); status = ((uint8_t)i2c_read_nack()); i2c_stop(); } else { uart_puts("Error"); i2c_stop(); } […]

尽管在Linux内核模块中使用EXPORT_SYMBOL,如何防止“错误:’符号’未声明”?

当我收到此错误时,我将一些驱动程序嵌入到Linux内核中(我在板文件中添加设备并注册它): error: ‘kxtf9_get_slave_descr’ undeclared here (not in a function) 我将上面的函数放在驱动程序文件中 struct ext_slave_descr *kxtf9_get_slave_descr(void) { return &kxtf9_descr; } EXPORT_SYMBOL(kxtf9_get_slave_descr); 它不应该由EXPORT_SYMBOL“可见”吗? 包含上面代码的C文件没有头文件(我没有写它,我只是在这里找到它并且我正在实现。他们说它已经过测试所以我假设不需要头文件? 其余代码编译完美(因此它“看到”文件夹中的代码),包含上面代码的文件也编译完成!