Including drivers in my project

Development Kit: NRF52840

IDE: Segger Embedded Studios

I'm trying to use the nrf_drv_twi driver in my project. I've included the .c file in my nFR_Drivers folder. My base project is the uart_pca10056 example and I'm referencing the twi_sensor example for using TWI. When I build the project I get the error on my call to NRF_DRV_TWI_INSTANCE:

"NRF_DRV_TWI_INSTANCE_0 undeclared here (not in a function) did you mean 'NRF_DRV_TWI_INSTANCE_'?"I

I've read some discussions that I need to enable something in the sdk_config.h file but when I go to do that, I notice the file does not contain the nrf_drv_twi defines to do so.

I've tried copying the defines from the twi_sensor example into my sdk_config.h and that still does not solve the problem.

Parents Reply Children
  • Hello again, Jason

    Thank you for providing this information, it is very helpful!

    I suspect that the issue now might stem from that you are using the legacy nrf_drv_* calls instead of the nrfx_* function calls, while only having enabled the NRFX drivers.
    The legacy drivers are now just forwarding macros to the nrfx implementation, but if their driver is not enabled then the forwarding will be missing as well.
    I recommend updating your project to use the nrfx driver calls directly.

    JasonPierpont said:

    I tried adding these variations of the file path and still had the same error.

    ../../../../../../ntegration/nrfx/legacy

    ../../../../../../ntegration/nrfx/legacy/nrf_drv_twi

    ../../../../../../ntegration/nrfx/legacy/nrf_drv_twi_h

    These paths are misspelt - the folder is called integration - and also you will only need to point to the /modules/nrfx/drivers/include/ in order for it to find the nrfx_twi(m) header file.

    JasonPierpont said:
    I am not intentionally using TWI instead of TWIM. I am trying to communicate with a sensor via I2C and I read that TWI was the Nordic equivalent. Is TWIM better/easier to use than TWI?

    The difference between the nrfx_twi and nrfx_twim peripheral is made to use easyDMA, which enabled you to perform and stage operations without direct involvement from the CPU. I would recommend that you use the nrfx_twim driver if you will be operating as a TWI Master on your nRF device.

    Best regards,
    Karl

Related