Hi All!
Hope you all are doing well!
I am using nrf52833DK, NCS version 2.3.0, and VSCODE studio as an IDE. I am integrating the tlv493D sensor with nrf52833.
The issue I am facing is that
I have two sets of sensors available , address of both are 0x5E
1)shield2go tlv493D
2)adafruit tlv493D
My code is working fine with only
1)shield2go tlv493D. but when I interface
2)adafruit tlv493D .NOT WORKING. I used Oscilscope the sensor is not sending ack against the address.
Both sensors pins are pulled up by 3v
* I wrote the same code in Arduino ide for esp32 and it's working for both sensors.
- can anybody tell me how to set the i2c pins as an open drain? because this is the only option left.
- If you go through the 3 oscilloscope images then the 8th bit is high (for read ) from esp32 but low from nrf52833 (should be high for read but still reading )
- is it any option to send 8th bit as high (read)
My code is as follows
.overlay
&i2c0 {
mysensor: mysensor@5e{
compatible = "i2c-device";
reg = < 0x5e>;
status = "okay";
label = "MYSENSOR";
};
pinctrl-0 = <&i2c0_default_alt>; // for custom board scl = 0.02 & Sda = 0.29 , plz uncomment
pinctrl-1 = <&i2c0_sleep_alt>;
pinctrl-names = "default", "sleep";
clock-frequency = <400000>;
};
&pinctrl {
uart0_default_alt: uart0_default_alt {
group1 {
psels = <NRF_PSEL(UART_TX, 1, 9)>,
<NRF_PSEL(UART_RTS, 0, 4)>; //5
};
group2 {
psels = <NRF_PSEL(UART_RX, 0, 3)>,
<NRF_PSEL(UART_CTS, 0, 7)>;
bias-pull-up;
};
};
uart0_sleep_alt: uart0_sleep_alt {
group1 {
psels = <NRF_PSEL(UART_TX, 1, 9)>,
<NRF_PSEL(UART_RX, 0, 3)>,
<NRF_PSEL(UART_RTS, 0, 4)>, //5
<NRF_PSEL(UART_CTS, 0, 7)>;
low-power-enable;
};
};
i2c0_default_alt: i2c0_default_alt {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 29)>,
<NRF_PSEL(TWIM_SCL, 0, 2)>;
low-power-enable;
};
};
i2c0_sleep_alt: i2c0_sleep_alt {
group1 {
psels = <NRF_PSEL(TWIM_SDA, 0, 29)>,
<NRF_PSEL(TWIM_SCL, 0, 2)>;
low-power-enable;
};
};
};
main.c
if(!device_is_ready(dev_i2c.bus)){
printf("i2c_dev not ready\n");
return;
}
ret = i2c_burst_read_dt(&dev_i2c,0x00,rbuffer,10); // read 1st 10 bytes and store it in rbuffer
for(int i=0; i<10; i++){
printf("Readbuffer 0x%x\n",rbuffer[i]);
}
esp32 communication with adafruit tlv493d sensor
esp32 communication with shield2go tlv493d sensor
nrf52833 communication with shiled2go tlv493d sensor