This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How can i use I2C_1 on nrf9160(ncs1.3.0)?

I want to use the four peripherals UART0, UART2, UART3, and I2C_1 on nrf9160. When I was building the project, I encountered the following error.

Here my prj.conf

# LOG
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3

# UART interface
CONFIG_SERIAL=y
CONFIG_UART_INTERRUPT_DRIVEN=y

# Segger RTT
CONFIG_USE_SEGGER_RTT=y
CONFIG_RTT_CONSOLE=y
CONFIG_LOG_BACKEND_RTT=y
#CONFIG_UART_CONSOLE=n
#CONFIG_LOG_BACKEND_UART=n

# Network
CONFIG_NETWORKING=y
CONFIG_NET_NATIVE=n
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_OFFLOAD=y

# BSD library
CONFIG_BSD_LIBRARY=y

# LTE link control
CONFIG_LTE_LINK_CONTROL=y
CONFIG_LTE_AUTO_INIT_AND_CONNECT=n
CONFIG_LTE_NETWORK_MODE_NBIOT_GPS=y
CONFIG_LTE_LEGACY_PCO_MODE=y

# ADC
CONFIG_ADC=y
CONFIG_ADC_NRFX_SAADC=y

#DA270
CONFIG_I2C=y
CONFIG_SENSOR=y
CONFIG_DA270=y
CONFIG_DA270_TRIGGER_GLOBAL_THREAD=y
CONFIG_SENSOR_LOG_LEVEL_WRN=y
CONFIG_I2C_1=y
CONFIG_I2C_1_NRF_TWIM=y
CONFIG_I2C_2=n
CONFIG_I2C_2_NRF_TWIM=n

# AT host library
CONFIG_AT_HOST_LIBRARY=y
#CONFIG_AT_CMD=y
#CONFIG_AT_NOTIF=y

# Device power management
CONFIG_DEVICE_POWER_MANAGEMENT=y

CONFIG_MAIN_STACK_SIZE=4096
CONFIG_HEAP_MEM_POOL_SIZE=4096
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

nrf9160dk_nrf9160ns.overlay

&uart0 {
	current-speed = <115200>;
	status = "okay";
	tx-pin = <29>;
	rx-pin = <28>;
	rts-pin = <19>;
	cts-pin = <21>;
};

&uart3 {
	current-speed = <9600>;
	status = "okay";
	tx-pin = <26>;
	rx-pin = <27>;
	rts-pin = <14>;
	cts-pin = <16>;
};

&uart2 {
	current-speed = <115200>;
	status = "okay";
	tx-pin = <12>;
	rx-pin = <11>;
	rts-pin = <18>;
	cts-pin = <23>;
};

&uart1 {
	status = "disabled";
};

&i2c1 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	sda-pin = <0>;                
    scl-pin = <1>;
	clock-frequency = <400000>;
	da270@26 {
		compatible = "mir,da270";
		reg = <38>;
		label = "DA270";
		int-gpios = <&gpio0 2 0>;
	};
};

CONFIG_I2C_1_NRF_TWIM cannot be configured. How do I set up my project to get I2C_1 to work. Thanks.

  • The problem has been solved.I just need to change the overlay.

    &uart0 {
    	current-speed = <115200>;
    	status = "okay";
    	tx-pin = <29>;
    	rx-pin = <28>;
    	rts-pin = <19>;
    	cts-pin = <21>;
    };
    
    &uart3 {
    	current-speed = <9600>;
    	status = "okay";
    	tx-pin = <26>;
    	rx-pin = <27>;
    	rts-pin = <14>;
    	cts-pin = <16>;
    };
    
    &uart2 {
    	current-speed = <115200>;
    	status = "okay";
    	tx-pin = <12>;
    	rx-pin = <11>;
    	rts-pin = <18>;
    	cts-pin = <23>;
    };
    
    &uart1 {
    	status = "disabled";
    };
    &i2c1 {
    	compatible = "nordic,nrf-twim";
    	status = "okay";
    	sda-pin = <0>;                
        scl-pin = <1>;
    	clock-frequency = <400000>;
    	da270@26 {
    		compatible = "mir,da270";
    		reg = <38>;
    		label = "DA270";
    		int-gpios = <&gpio0 2 0>;
    	};
    };
    
    &i2c2 {
    	status = "disabled";
    };
    

  • by default UART1 reserved for modem traces. if you use i2c1 then you cannot use urat1.

Related