Hello!
I am trying to merge two simple Zephyr applications that both use I2C. I have an application that uses the SBC_OLED01 display. I followed these instructions. The second application uses the LISH3DH accelerometer with the nordic example LIS2DH. Both are using the i2c0 node. When I compile them separately it works fine, but after I merge them I get the error undefined reference to `__device_dts_ord_XXX'. I have searched the devzone but have not found anything that could help me. I assume the error lies in the overlay file. Here is the overlay file:
arduino_i2c: &i2c0 {
compatible = "nordic,nrf-twim";
status = "okay";
clock-frequency = <I2C_BITRATE_FAST>;
zephyr,concat-buf-size = <4096>;
};
&i2c1 {
status = "okay";
/* --> if uncomment this then I get the error
lis2dh12: lis2dh12@18 {
compatible = "st,lis2dh12", "st,lis2dh";
reg = <0x18>;
irq-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>, <&gpio0 30 GPIO_ACTIVE_HIGH>;
disconnect-sdo-sa0-pull-up;
};
*/
};
I have looked in the zephyr.dts file and I it looks okay:
....
i2c0: arduino_i2c: i2c@40003000 {
compatible = "nordic,nrf-twim";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40003000 0x1000 >;
clock-frequency = < 0x61a80 >;
interrupts = < 0x3 0x1 >;
status = "okay";
pinctrl-0 = < &i2c0_default >;
pinctrl-1 = < &i2c0_sleep >;
pinctrl-names = "default", "sleep";
zephyr,concat-buf-size = < 0x1000 >;
ssd1306_ssd1306_128x32: ssd1306@3c {
compatible = "solomon,ssd1306fb";
reg = < 0x3c >;
width = < 0x80 >;
height = < 0x20 >;
segment-offset = < 0x0 >;
page-offset = < 0x0 >;
display-offset = < 0x0 >;
multiplex-ratio = < 0x1f >;
segment-remap;
com-invdir;
com-sequential;
prechargep = < 0x22 >;
};
};
spi0: spi@40003000 {
compatible = "nordic,nrf-spi";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40003000 0x1000 >;
interrupts = < 0x3 0x1 >;
max-frequency = < 0x7a1200 >;
easydma-maxcnt-bits = < 0x10 >;
status = "disabled";
pinctrl-0 = < &spi0_default >;
pinctrl-1 = < &spi0_sleep >;
pinctrl-names = "default", "sleep";
};
i2c1: i2c@40004000 {
compatible = "nordic,nrf-twi";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40004000 0x1000 >;
clock-frequency = < 0x186a0 >;
interrupts = < 0x4 0x1 >;
status = "okay";
pinctrl-0 = < &i2c1_default >;
pinctrl-1 = < &i2c1_sleep >;
pinctrl-names = "default", "sleep";
lis2dh12: lis2dh12@18 {
compatible = "st,lis2dh12", "st,lis2dh";
reg = < 0x18 >;
irq-gpios = < &gpio0 0x1c 0x0 >, < &gpio0 0x1e 0x0 >;
disconnect-sdo-sa0-pull-up;
};
};
...
I thought I need to add the CONFIG_I2C_1 flag in the .conf file, but it does not recognize the symbol. What could be issue of this error?
Thanks for the help!!!
OS: Windows
SDK: 2.4.1
IDE: Visual Studio Code
Hardware: nRF52840 DK






