Hi, Im triying to configure a LPI2C comunication in a S32K144EVB-Q100 with S32 Design Studio but i don´t know how to do it.
The thing that i want to do is:
Master sends one byte (0x00) to the register 0x03 of one Slave with adress 0x6C.
The steps that i followed were:
-I create a new Proyect.
-I run the Processor Expert and i add the driver of LPI2C.
-I configured LPI2C driver:
*Slave adress: 0x6C
*Operating Mode: Standard
*Baud rate (Hz): 100000
*Transfer Type: Interrupts
-I configured pins in the pin _mux
PTA 2 -> SDA
PTA3 -> SCL
- I use this code:
#include "Cpu.h"
#include "pin_mux.h"
#include "clockMan1.h"
#include "lpi2c1.h"
#include "dmaController1.h"
#include "osif1.h"
#include "lpi2c_driver.h"
#include "lpi2c1.h"
volatile int exit_code = 0;
lpi2c_master_state_t MasterState0={};
/*!
void disable_WDOG (void){
WDOG->CNT=0xD928C520; /*Unlock watchdog*/
WDOG->TOVAL=0x0000FFFF; /*Maximum timeout value*/
WDOG->CS = 0x00002100; /*Disable watchdog*/
}
void init_clock(void){
CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT, g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);
CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT);
}
void init_pins(void){
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr);
}
void lpi2c1_MasterCallback0(uint8_t instance,lpi2c_master_event_t masterEvent,void *userData){};
int main(void)
{
/* Write your local variable definition here */
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
#ifdef PEX_RTOS_INIT
PEX_RTOS_INIT(); /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */
#endif
/*** End of Processor Expert internal initialization. ***/
/* Write your code here */
disable_WDOG();
init_clock();
init_pins();
for(;;){
LPI2C_DRV_MasterInit(INST_LPI2C1,&lpi2c1_MasterConfig0,&MasterState0);
LPI2C_DRV_MasterSendData(INST_LPI2C1,0x00,1U,1);
LPI2C_DRV_MasterSendData(INST_LPI2C1,0x00,1U,1);
LPI2C_DRV_MasterDeinit(INST_LPI2C1);
}
/* For example: for(;;) { } */
/*** Don't write any code pass this line, or it will be deleted during code generation. ***/
/*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/
#ifdef PEX_RTOS_START
PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */
#endif
/*** End of RTOS startup code. ***/
/*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
for(;;) {
if(exit_code != 0) {
break;
}
}
return exit_code;
/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
-I connect to the SDA and SCL pins a osciloscope to see the signal and i dont receive nothing.
What i'm doing wrong?
Regards