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

i2c_nrfx_twim: Error 195952641 occurred for message 0

It works when I use I2C_2 to communicateon nrf9160. The register value is successfully accessed when i2C_reg_write_byte() is called.

9160dk_9160ns.overlay:

&i2c2 {
	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>;
	};
};

I want to change I2C2 to I2C1.

Modified overlay:

&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>;
	};
};

&uart1 {
	status = "disabled";
};

The following error occurs when i2C_reg_write_byte() is called to access the same register of the slave machine:

The code is the same and I haven't changed it. Why is this a problem?

Parents
  • Hi,

    In you proj.conf file try to set:

    CONFIG_I2C=y

    CONFIG_I2C_NRFX=y
    CONFIG_I2C_1=y
    CONFIG_I2C_1_NRF_TWIM=y

    CONFIG_I2C_2=n
    CONFIG_I2C_2_NRF_TWIM=n


    Regards,
    Jonathan

  • The project won't open after I've configured it this way

    pri.config:

    #CONFIG_TRUSTED_EXECUTION_NONSECURE=y
    
    # 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_NRFX=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

    ERROR:

    These macros are automatically activated when the device tree is configured. I accessed the register error during debug.

  • I tried I2C_3 and it worked. I have used uart0, uart2 and uart3, so I can only use I2C_1 now. This problem has bothered me for a long time.

Reply Children
Related