Hello ,
- We are using DA14531 for our development.
- Have interface TPMS pressure sensor with DA14531 over I2C . and we are using DA14531 as I2C slave.-
- Firstly I have interfaced sensor with only peripheral I2C code and its working fine, can able to read the data.(E:\Dialog\Multilink\SW_Examples\DA145xx_SDK\6.0.14.1114\projects\target_apps\peripheral_examples\I2C-Master-Slave\I2C_Slave)
- the I merged my I2C code with central code of software example below is the path, when i try to run its stuck at assert warning path, not able to read the data. Please suggest why code getting hang when i merge with BLE Central code.
E:\Dialog\Multilink\SW_Examples\BLE_SDK6_examples-main_c\connectivity\central
Please suggest.
Thanks in advance
Pavan S K
Hi Pavan,Thank you for posting your question online.Have you configured your I2C pins and initialization inside the user_periph_setup.c/h files?Did you just copy the files you were interested inside the central example?Your projects get this assert warning during initialization?
Kind Regards,OV_Renesas
Hi,
Yes , I have initialized in user_periph_setup.h, Yes i have merged working I2C program into the cental and yes project gets asser warning in initialization.
Pavan S K3276.central.zip
Waiting for your reply.
Hi Pavan,Thank you for the reply. I downloaded your project and placed it inside the SDK v6.0.14. I used the python script available for the GitRepo examples in order to set the paths correctly but I am not able to compile your project. I am getting errors regarding the user_periph_setup.c/h files.Can you explain what these variables do and from where you have used extern for them?
extern uint8_t transmit_buffer[16]; extern uint8_t receive_buffer[16];
memset(&i2c_configuration, 0, sizeof(i2c_configuration)); i2c_configuration.speed = I2C_SPEED_MODE; i2c_configuration.mode = I2C_MODE_SLAVE; i2c_configuration.addr_mode = I2C_ADDRESS_MODE; i2c_configuration.address = I2C_TARGET_ADDRESS; i2c_configuration.clock_cfg.fs_hcnt = I2C_FS_SCL_HCNT_REG_RESET; i2c_configuration.clock_cfg.fs_lcnt = I2C_FS_SCL_LCNT_REG_RESET; i2c_configuration.clock_cfg.ss_hcnt = I2C_SS_SCL_HCNT_REG_RESET; i2c_configuration.clock_cfg.ss_lcnt = I2C_SS_SCL_LCNT_REG_RESET;
// Configuration struct for I2C static const i2c_cfg_t i2c_cfg = { .clock_cfg.ss_hcnt = I2C_SS_SCL_HCNT_REG_RESET, .clock_cfg.ss_lcnt = I2C_SS_SCL_LCNT_REG_RESET, .clock_cfg.fs_hcnt = I2C_FS_SCL_HCNT_REG_RESET, .clock_cfg.fs_lcnt = I2C_FS_SCL_LCNT_REG_RESET, .restart_en = I2C_RESTART_ENABLE, .speed = I2C_SPEED_MODE, .mode = I2C_MODE_SLAVE, .addr_mode = I2C_ADDRESS_MODE, .address = I2C_TARGET_ADDRESS, .tx_fifo_level = 1, .rx_fifo_level = 1, };
Hi sir,
Thanks for your input. we have done the suggested change. Now we are not getting ASSERT_WARNING. But in I2C function have one counter(variable) which need to be incremented but it is not happening.
MCU is not coming out from highlighted while loop. As a result MCU is going to nmi_handlerc as shown below.
please find the attached code link below.
https://smetgroup-my.sharepoint.com/:u:/g/personal/ravi_mysmindia_com/ESI5TrQuaIlDn04IcpBgIrYBlw49gqEs1mk9uVKdVtmkRw?e=PyV9Gs
Please suggest the required changes.
Thanks in Advance
Ravi Kumar Anand.
Hi ,
Sunny has updated the issue behalf of me please suggest.
Hi Ravi, Pavan,Thank you for the reply.Let me check on this and I will get back to you.Kind Regards,OV_Renesas
Waiting for your inputs.
Thanks, in advance.
Pavan s k
Hi Pavan, Ravi,Apologies for the delay.I was not able to build the project you have shared.I tried on SDK v6.0.18, v6.0.16, v6.0.14 and I always get this error:Also I am not able to find the i2c_slave_receive_transmit function anywhere inside the project you have shared. Have you made any modifications inside the i2c.c/h files? Can you share more infromation regarding your project idea?You have a central device, that is constantly reading data from a I2C sensor? Have you implemented any interrupt for this? Could you please probe a logic analyzer on the Pins you have configured for I2C communication so we can see exactly what is happening?Also, from my understanding this I2C implementation was working on each own, but when merged with the central project leads on this NMI handler. Please correct me if I am mistaken.I can also see from your project that you have enabled Extended Sleep mode. Are you handling the sleep mode when you are trying to read the sensor data via I2C?Kind Regards,OV_Renesas
Thanks for your information.
Please find the attached link for SDK where we have configured i2c slave in the below path.
link - https://smetgroup-my.sharepoint.com/:f:/g/personal/ravi_mysmindia_com/EnL-STLNG6xDnEOkpM1W4TsB-P6_FNOFHbO9zb8-UVh-pQ?e=A53RWT
File path - DA145xx_SDK\6.0.16.1144\projects\target_apps\peripheral_examples\i2c\i2c_eeprom
Kind helps us to merge i2c slave(from the attached link above) with the central code. it's bit urgent for us.
Thanks for your support in advance.
Hi Ravi,Thank you for the reply.I was able to build your project. You have modified the sdk folders. We highly recommend to NOT modify the SDK_folders unless it is necessary.You have heavily modified the main function inside the arch_main.c file.The SDK is supported as it is.You should not have added the i2c_slave_receive_transmit function there.By doing that you are messing with the scheduler. You should start and call the I2C initialization and transmit/receive functions inside the user folders. The i2c_slave_receive_transmit function you have added in the arch_main.c file should be moved on the user folders as well.Could you also kindly share a high-level overview of the project steps? I can see you have the default_app_on_init callback function enabled, so when do you want to start to get sensor reading via I2C?How often are you going to get measurements? Do you want to implement any sleep-mode into your project? Kind Regards,OV_Renesas