AnsweredAssumed Answered

Bluegiga BLE112 + AD5933 I2C

Question asked by on Apr 25, 2017
Latest reply on May 2, 2017 by musach

I am using a Bluegiga BLE112 to perform bluetooth impedance spectroscopy using an AD5933.  The device should communicate via I2C to configure the registry.  I am able to communicate with a BME280 I2C device with the BLE112 and read the correct Who Am I register value.  Unfortunately, the AD5933 returns 0x00 for all registers I attempt to read from.  Any ideas on what may be wrong?


Potential Bugs.


1.  Chip Address


My raspberry pi shows the ad5933 has an 8-bit I2C address of 0xD0.  I am also able to read and write registers with the Raspberry Pi.  The bgapi documentation describes 7-bit I2C devices and needing to bit-shift the address to 8-bits.  Though this device has an 8-bit address.   I assume there is possibly an 8-bit read address and 8-bit write address.  Though I tried all combinations without any success.  


.BGS file excerpt

if handle = i2c_read then

#208 = 0xd0.  Assumed read address

#209 = 0xd1.  Assumed write address
call hardware_i2c_write(209,0,1,value(0:1))(i2c_written)
call hardware_i2c_read(208,1,1)(i2c_result,i2c_data_len,i2c_data)
call attributes_write(i2c_read, 0, 1, i2c_data)
end if


2.  Pull-up Resistors


I thought that there may be an issue with the pull-up resistors needed for I2C communication.  These may be configured in the hardware.xml file.  The raspberry pi has built-in I2C pullup resistors.  The BLE112 use software bit-banging for I2C communication.  I am unsure if pull-up resistors are needed or built-in.  I did attach 10 kOhm external pull-up resistors to the I2C pins and used all combination of chip addresses described previously without success. 




<?xml version="1.0" encoding="UTF-8" ?>
<sleeposc enable="true" ppm="30" />
<usb enable="false" endpoint="api" />
<txpower power="15" bias="5" />
<script enable="true" />
<port index="1" tristatemask="0" pull="up" />