98 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /******************************************************************************
 | |
|  * @file        hal_i2c.c
 | |
|  * @copyright   Nehemis SARL reserves all rights even in the event of industrial
 | |
|  *              property rights. We reserve all rights of disposal such as
 | |
|  *              copying and passing on to third parties.
 | |
|  *
 | |
|  * @brief       STM HAL layer wrapper class for I2C.
 | |
|  *
 | |
|  ******************************************************************************/
 | |
| 
 | |
| /******************************************************************************
 | |
|  * Include Header Files
 | |
|  ******************************************************************************/
 | |
| #include "hal_i2c.h"
 | |
| 
 | |
| /* CubeMX */
 | |
| #include "i2c.h"
 | |
| 
 | |
| /******************************************************************************
 | |
|  * Function Definitions
 | |
|  ******************************************************************************/
 | |
| uint32 HalI2CInit(void)
 | |
| {
 | |
|     return NMS_ERR_NONE;
 | |
| }
 | |
| 
 | |
| 
 | |
| uint32 HalI2CWrite(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint16 memAddr_u16, uint16 memAddrSize_u16, uint8 *pData_pu8, uint16 size_u16)
 | |
| {
 | |
|     uint32 error_u32 = NMS_ERR_NONE;
 | |
|     HAL_StatusTypeDef halStatus_en = HAL_OK;
 | |
|     I2C_HandleTypeDef *targetModule_pst;
 | |
| 
 | |
|     error_u32 = MapHalI2cModule(module_en, &targetModule_pst);
 | |
|     if (error_u32 == NMS_ERR_NONE)
 | |
|     {
 | |
|         halStatus_en = HAL_I2C_Mem_Write(targetModule_pst, devAddr_u16, memAddr_u16, memAddrSize_u16, pData_pu8, size_u16, HAL_MAX_DELAY);
 | |
| 
 | |
|         switch (halStatus_en)
 | |
|         {
 | |
|             case HAL_BUSY:      error_u32 = NMS_ERR_BUSY;       break;
 | |
|             case HAL_TIMEOUT:   error_u32 = NMS_ERR_TIMEOUT;    break;
 | |
|             case HAL_ERROR:     error_u32 = NMS_ERR_INTERNAL;   break;
 | |
|             case HAL_OK:        error_u32 = NMS_ERR_NONE;       break;
 | |
|             default:            error_u32 = NMS_ERR_UNKNOWN;    break;
 | |
|         }
 | |
|     }
 | |
|     return error_u32;
 | |
| }
 | |
| 
 | |
| 
 | |
| uint32 HalI2CRead(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint16 memAddr_u16, uint16 memAddrSize_u16, uint8 *pData_pu8, uint16 size_u16)
 | |
| {
 | |
|     uint32 error_u32 = NMS_ERR_NONE;
 | |
|     HAL_StatusTypeDef halStatus_en = HAL_OK;
 | |
|     I2C_HandleTypeDef *targetModule_pst;
 | |
| 
 | |
|     error_u32 = MapHalI2cModule(module_en, &targetModule_pst);
 | |
|     if (error_u32 == NMS_ERR_NONE)
 | |
|     {
 | |
|         halStatus_en = HAL_I2C_Mem_Read(targetModule_pst, devAddr_u16, memAddr_u16, memAddrSize_u16, pData_pu8, size_u16, HAL_MAX_DELAY);
 | |
| 
 | |
|         switch (halStatus_en)
 | |
|         {
 | |
|             case HAL_BUSY:      error_u32 = NMS_ERR_BUSY;       break;
 | |
|             case HAL_TIMEOUT:   error_u32 = NMS_ERR_TIMEOUT;    break;
 | |
|             case HAL_ERROR:     error_u32 = NMS_ERR_INTERNAL;   break;
 | |
|             case HAL_OK:        error_u32 = NMS_ERR_NONE;       break;
 | |
|             default:            error_u32 = NMS_ERR_UNKNOWN;    break;
 | |
|         }
 | |
|     }
 | |
|     return error_u32;
 | |
| }
 | |
| 
 | |
| 
 | |
| uint32 HalI2CMasterTransmit(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint8 *pData_pu8, uint16 size_u16)
 | |
| {
 | |
|     uint32 error_u32 = NMS_ERR_NONE;
 | |
|     HAL_StatusTypeDef halStatus_en = HAL_OK;
 | |
|     I2C_HandleTypeDef *targetModule_pst;
 | |
| 
 | |
|     error_u32 = MapHalI2cModule(module_en, &targetModule_pst);
 | |
|     if (error_u32 == NMS_ERR_NONE)
 | |
|     {
 | |
|         halStatus_en = HAL_I2C_Master_Transmit(targetModule_pst, devAddr_u16, pData_pu8, size_u16, HAL_MAX_DELAY);
 | |
| 
 | |
|         switch (halStatus_en)
 | |
|         {
 | |
|             case HAL_BUSY:      error_u32 = NMS_ERR_BUSY;       break;
 | |
|             case HAL_TIMEOUT:   error_u32 = NMS_ERR_TIMEOUT;    break;
 | |
|             case HAL_ERROR:     error_u32 = NMS_ERR_INTERNAL;   break;
 | |
|             case HAL_OK:        error_u32 = NMS_ERR_NONE;       break;
 | |
|             default:            error_u32 = NMS_ERR_UNKNOWN;    break;
 | |
|         }
 | |
|     }
 | |
|     return error_u32;
 | |
| }
 |