Subversion Repositories FuelGauge

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 6
Line 46... Line 46...
46
  * @{
46
  * @{
47
  */
47
  */
48
typedef struct
48
typedef struct
49
{
49
{
50
  uint32_t Timing;              /*!< Specifies the I2C_TIMINGR_register value.
50
  uint32_t Timing;              /*!< Specifies the I2C_TIMINGR_register value.
51
                                  This parameter calculated by referring to I2C initialization
51
                                     This parameter calculated by referring to I2C initialization section
52
                                         section in Reference manual */
52
                                     in Reference manual */
53
 
53
 
54
  uint32_t OwnAddress1;         /*!< Specifies the first device own address.
54
  uint32_t OwnAddress1;         /*!< Specifies the first device own address.
55
                                  This parameter can be a 7-bit or 10-bit address. */
55
                                     This parameter can be a 7-bit or 10-bit address. */
56
 
56
 
57
  uint32_t AddressingMode;      /*!< Specifies if 7-bit or 10-bit addressing mode is selected.
57
  uint32_t AddressingMode;      /*!< Specifies if 7-bit or 10-bit addressing mode is selected.
58
                                  This parameter can be a value of @ref I2C_ADDRESSING_MODE */
58
                                     This parameter can be a value of @ref I2C_ADDRESSING_MODE */
59
 
59
 
60
  uint32_t DualAddressMode;     /*!< Specifies if dual addressing mode is selected.
60
  uint32_t DualAddressMode;     /*!< Specifies if dual addressing mode is selected.
61
                                  This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */
61
                                     This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */
62
 
62
 
63
  uint32_t OwnAddress2;         /*!< Specifies the second device own address if dual addressing mode is selected
63
  uint32_t OwnAddress2;         /*!< Specifies the second device own address if dual addressing mode is selected
64
                                  This parameter can be a 7-bit address. */
64
                                     This parameter can be a 7-bit address. */
65
 
65
 
66
  uint32_t OwnAddress2Masks;    /*!< Specifies the acknowledge mask address second device own address if dual addressing mode is selected
66
  uint32_t OwnAddress2Masks;    /*!< Specifies the acknowledge mask address second device own address if dual addressing
-
 
67
                                     mode is selected.
67
                                  This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */
68
                                     This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */
68
 
69
 
69
  uint32_t GeneralCallMode;     /*!< Specifies if general call mode is selected.
70
  uint32_t GeneralCallMode;     /*!< Specifies if general call mode is selected.
70
                                  This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */
71
                                     This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */
71
 
72
 
72
  uint32_t NoStretchMode;       /*!< Specifies if nostretch mode is selected.
73
  uint32_t NoStretchMode;       /*!< Specifies if nostretch mode is selected.
73
                                  This parameter can be a value of @ref I2C_NOSTRETCH_MODE */
74
                                     This parameter can be a value of @ref I2C_NOSTRETCH_MODE */
74
 
75
 
75
} I2C_InitTypeDef;
76
} I2C_InitTypeDef;
76
 
77
 
77
/**
78
/**
78
  * @}
79
  * @}
Line 198... Line 199...
198
  __IO uint32_t              XferOptions;    /*!< I2C sequantial transfer options, this parameter can
199
  __IO uint32_t              XferOptions;    /*!< I2C sequantial transfer options, this parameter can
199
                                                  be a value of @ref I2C_XFEROPTIONS */
200
                                                  be a value of @ref I2C_XFEROPTIONS */
200
 
201
 
201
  __IO uint32_t              PreviousState;  /*!< I2C communication Previous state          */
202
  __IO uint32_t              PreviousState;  /*!< I2C communication Previous state          */
202
 
203
 
203
  HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);  /*!< I2C transfer IRQ handler function pointer */
204
  HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources);
-
 
205
  /*!< I2C transfer IRQ handler function pointer */
204
 
206
 
205
  DMA_HandleTypeDef          *hdmatx;        /*!< I2C Tx DMA handle parameters              */
207
  DMA_HandleTypeDef          *hdmatx;        /*!< I2C Tx DMA handle parameters              */
206
 
208
 
207
  DMA_HandleTypeDef          *hdmarx;        /*!< I2C Rx DMA handle parameters              */
209
  DMA_HandleTypeDef          *hdmarx;        /*!< I2C Rx DMA handle parameters              */
208
 
210
 
Line 215... Line 217...
215
  __IO uint32_t              ErrorCode;      /*!< I2C Error code                            */
217
  __IO uint32_t              ErrorCode;      /*!< I2C Error code                            */
216
 
218
 
217
  __IO uint32_t              AddrEventCount; /*!< I2C Address Event counter                 */
219
  __IO uint32_t              AddrEventCount; /*!< I2C Address Event counter                 */
218
 
220
 
219
#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
221
#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
220
  void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);           /*!< I2C Master Tx Transfer completed callback */
222
  void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
223
  /*!< I2C Master Tx Transfer completed callback */
221
  void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);           /*!< I2C Master Rx Transfer completed callback */
224
  void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
225
  /*!< I2C Master Rx Transfer completed callback */
222
  void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);            /*!< I2C Slave Tx Transfer completed callback  */
226
  void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
227
  /*!< I2C Slave Tx Transfer completed callback  */
223
  void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);            /*!< I2C Slave Rx Transfer completed callback  */
228
  void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
229
  /*!< I2C Slave Rx Transfer completed callback  */
224
  void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c);             /*!< I2C Listen Complete callback              */
230
  void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
231
  /*!< I2C Listen Complete callback              */
225
  void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);              /*!< I2C Memory Tx Transfer completed callback */
232
  void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
233
  /*!< I2C Memory Tx Transfer completed callback */
226
  void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);              /*!< I2C Memory Rx Transfer completed callback */
234
  void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
235
  /*!< I2C Memory Rx Transfer completed callback */
227
  void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c);                  /*!< I2C Error callback                        */
236
  void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
237
  /*!< I2C Error callback                        */
228
  void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c);              /*!< I2C Abort callback                        */
238
  void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
239
  /*!< I2C Abort callback                        */
229
 
240
 
230
  void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode);  /*!< I2C Slave Address Match callback */
241
  void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode);
-
 
242
  /*!< I2C Slave Address Match callback */
231
 
243
 
232
  void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c);                /*!< I2C Msp Init callback                     */
244
  void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
245
  /*!< I2C Msp Init callback                     */
233
  void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c);              /*!< I2C Msp DeInit callback                   */
246
  void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c);
-
 
247
  /*!< I2C Msp DeInit callback                   */
234
 
248
 
235
#endif  /* USE_HAL_I2C_REGISTER_CALLBACKS */
249
#endif  /* USE_HAL_I2C_REGISTER_CALLBACKS */
236
} I2C_HandleTypeDef;
250
} I2C_HandleTypeDef;
237
 
251
 
238
#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
252
#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
Line 257... Line 271...
257
} HAL_I2C_CallbackIDTypeDef;
271
} HAL_I2C_CallbackIDTypeDef;
258
 
272
 
259
/**
273
/**
260
  * @brief  HAL I2C Callback pointer definition
274
  * @brief  HAL I2C Callback pointer definition
261
  */
275
  */
262
typedef  void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c); /*!< pointer to an I2C callback function */
276
typedef  void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c);
-
 
277
/*!< pointer to an I2C callback function */
263
typedef  void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); /*!< pointer to an I2C Address Match callback function */
278
typedef  void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection,
-
 
279
                                          uint16_t AddrMatchCode);
-
 
280
/*!< pointer to an I2C Address Match callback function */
264
 
281
 
265
#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
282
#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
266
/**
283
/**
267
  * @}
284
  * @}
268
  */
285
  */
Line 438... Line 455...
438
/** @brief Reset I2C handle state.
455
/** @brief Reset I2C handle state.
439
  * @param  __HANDLE__ specifies the I2C Handle.
456
  * @param  __HANDLE__ specifies the I2C Handle.
440
  * @retval None
457
  * @retval None
441
  */
458
  */
442
#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
459
#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
443
#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                do{                                                   \
460
#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                do{                                             \
444
                                                                    (__HANDLE__)->State = HAL_I2C_STATE_RESET;       \
461
                                                                    (__HANDLE__)->State = HAL_I2C_STATE_RESET;  \
445
                                                                    (__HANDLE__)->MspInitCallback = NULL;            \
462
                                                                    (__HANDLE__)->MspInitCallback = NULL;       \
446
                                                                    (__HANDLE__)->MspDeInitCallback = NULL;          \
463
                                                                    (__HANDLE__)->MspDeInitCallback = NULL;     \
447
                                                                  } while(0)
464
                                                                  } while(0)
448
#else
465
#else
449
#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                ((__HANDLE__)->State = HAL_I2C_STATE_RESET)
466
#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__)                ((__HANDLE__)->State = HAL_I2C_STATE_RESET)
450
#endif
467
#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
451
 
468
 
452
/** @brief  Enable the specified I2C interrupt.
469
/** @brief  Enable the specified I2C interrupt.
453
  * @param  __HANDLE__ specifies the I2C Handle.
470
  * @param  __HANDLE__ specifies the I2C Handle.
454
  * @param  __INTERRUPT__ specifies the interrupt source to enable.
471
  * @param  __INTERRUPT__ specifies the interrupt source to enable.
455
  *        This parameter can be one of the following values:
472
  *        This parameter can be one of the following values:
Line 493... Line 510...
493
  *            @arg @ref I2C_IT_RXI   RX interrupt enable
510
  *            @arg @ref I2C_IT_RXI   RX interrupt enable
494
  *            @arg @ref I2C_IT_TXI   TX interrupt enable
511
  *            @arg @ref I2C_IT_TXI   TX interrupt enable
495
  *
512
  *
496
  * @retval The new state of __INTERRUPT__ (SET or RESET).
513
  * @retval The new state of __INTERRUPT__ (SET or RESET).
497
  */
514
  */
498
#define __HAL_I2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)      ((((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
515
#define __HAL_I2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)      ((((__HANDLE__)->Instance->CR1 & \
-
 
516
                                                                   (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
499
 
517
 
500
/** @brief  Check whether the specified I2C flag is set or not.
518
/** @brief  Check whether the specified I2C flag is set or not.
501
  * @param  __HANDLE__ specifies the I2C Handle.
519
  * @param  __HANDLE__ specifies the I2C Handle.
502
  * @param  __FLAG__ specifies the flag to check.
520
  * @param  __FLAG__ specifies the flag to check.
503
  *        This parameter can be one of the following values:
521
  *        This parameter can be one of the following values:
Line 519... Line 537...
519
  *            @arg @ref I2C_FLAG_DIR     Transfer direction (slave mode)
537
  *            @arg @ref I2C_FLAG_DIR     Transfer direction (slave mode)
520
  *
538
  *
521
  * @retval The new state of __FLAG__ (SET or RESET).
539
  * @retval The new state of __FLAG__ (SET or RESET).
522
  */
540
  */
523
#define I2C_FLAG_MASK  (0x0001FFFFU)
541
#define I2C_FLAG_MASK  (0x0001FFFFU)
524
#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) == (__FLAG__)) ? SET : RESET)
542
#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & \
-
 
543
                                                    (__FLAG__)) == (__FLAG__)) ? SET : RESET)
525
 
544
 
526
/** @brief  Clear the I2C pending flags which are cleared by writing 1 in a specific bit.
545
/** @brief  Clear the I2C pending flags which are cleared by writing 1 in a specific bit.
527
  * @param  __HANDLE__ specifies the I2C Handle.
546
  * @param  __HANDLE__ specifies the I2C Handle.
528
  * @param  __FLAG__ specifies the flag to clear.
547
  * @param  __FLAG__ specifies the flag to clear.
529
  *          This parameter can be any combination of the following values:
548
  *          This parameter can be any combination of the following values:
Line 538... Line 557...
538
  *            @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag
557
  *            @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag
539
  *            @arg @ref I2C_FLAG_ALERT   SMBus alert
558
  *            @arg @ref I2C_FLAG_ALERT   SMBus alert
540
  *
559
  *
541
  * @retval None
560
  * @retval None
542
  */
561
  */
543
#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? ((__HANDLE__)->Instance->ISR |= (__FLAG__)) \
562
#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? \
-
 
563
                                                    ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \
544
                                                                                 : ((__HANDLE__)->Instance->ICR = (__FLAG__)))
564
                                                    ((__HANDLE__)->Instance->ICR = (__FLAG__)))
545
 
565
 
546
/** @brief  Enable the specified I2C peripheral.
566
/** @brief  Enable the specified I2C peripheral.
547
  * @param  __HANDLE__ specifies the I2C Handle.
567
  * @param  __HANDLE__ specifies the I2C Handle.
548
  * @retval None
568
  * @retval None
549
  */
569
  */
550
#define __HAL_I2C_ENABLE(__HANDLE__)                            (SET_BIT((__HANDLE__)->Instance->CR1,  I2C_CR1_PE))
570
#define __HAL_I2C_ENABLE(__HANDLE__)                         (SET_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))
551
 
571
 
552
/** @brief  Disable the specified I2C peripheral.
572
/** @brief  Disable the specified I2C peripheral.
553
  * @param  __HANDLE__ specifies the I2C Handle.
573
  * @param  __HANDLE__ specifies the I2C Handle.
554
  * @retval None
574
  * @retval None
555
  */
575
  */
556
#define __HAL_I2C_DISABLE(__HANDLE__)                           (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))
576
#define __HAL_I2C_DISABLE(__HANDLE__)                        (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE))
557
 
577
 
558
/** @brief  Generate a Non-Acknowledge I2C peripheral in Slave mode.
578
/** @brief  Generate a Non-Acknowledge I2C peripheral in Slave mode.
559
  * @param  __HANDLE__ specifies the I2C Handle.
579
  * @param  __HANDLE__ specifies the I2C Handle.
560
  * @retval None
580
  * @retval None
561
  */
581
  */
562
#define __HAL_I2C_GENERATE_NACK(__HANDLE__)                     (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK))
582
#define __HAL_I2C_GENERATE_NACK(__HANDLE__)                  (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK))
563
/**
583
/**
564
  * @}
584
  * @}
565
  */
585
  */
566
 
586
 
567
/* Include I2C HAL Extended module */
587
/* Include I2C HAL Extended module */
Line 581... Line 601...
581
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c);
601
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c);
582
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c);
602
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c);
583
 
603
 
584
/* Callbacks Register/UnRegister functions  ***********************************/
604
/* Callbacks Register/UnRegister functions  ***********************************/
585
#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
605
#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
586
HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, pI2C_CallbackTypeDef pCallback);
606
HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID,
-
 
607
                                           pI2C_CallbackTypeDef pCallback);
587
HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID);
608
HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID);
588
 
609
 
589
HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback);
610
HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback);
590
HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c);
611
HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c);
591
#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
612
#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */
Line 596... Line 617...
596
/** @addtogroup I2C_Exported_Functions_Group2 Input and Output operation functions
617
/** @addtogroup I2C_Exported_Functions_Group2 Input and Output operation functions
597
  * @{
618
  * @{
598
  */
619
  */
599
/* IO operation functions  ****************************************************/
620
/* IO operation functions  ****************************************************/
600
/******* Blocking mode: Polling */
621
/******* Blocking mode: Polling */
601
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
622
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
623
                                          uint16_t Size, uint32_t Timeout);
602
HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
624
HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
625
                                         uint16_t Size, uint32_t Timeout);
603
HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);
626
HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
-
 
627
                                         uint32_t Timeout);
604
HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);
628
HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
-
 
629
                                        uint32_t Timeout);
605
HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
630
HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-
 
631
                                    uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
606
HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
632
HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-
 
633
                                   uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
607
HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout);
634
HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials,
-
 
635
                                        uint32_t Timeout);
608
 
636
 
609
/******* Non-Blocking mode: Interrupt */
637
/******* Non-Blocking mode: Interrupt */
610
HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
638
HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
639
                                             uint16_t Size);
611
HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
640
HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
641
                                            uint16_t Size);
612
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
642
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
613
HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
643
HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
614
HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
644
HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-
 
645
                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
615
HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
646
HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-
 
647
                                      uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
616
 
648
 
617
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions);
649
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
650
                                                 uint16_t Size, uint32_t XferOptions);
618
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions);
651
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
652
                                                uint16_t Size, uint32_t XferOptions);
619
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions);
653
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
-
 
654
                                                uint32_t XferOptions);
620
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions);
655
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
-
 
656
                                               uint32_t XferOptions);
621
HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c);
657
HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c);
622
HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c);
658
HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c);
623
HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress);
659
HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress);
624
 
660
 
625
/******* Non-Blocking mode: DMA */
661
/******* Non-Blocking mode: DMA */
626
HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
662
HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
663
                                              uint16_t Size);
627
HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
664
HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
665
                                             uint16_t Size);
628
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
666
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
629
HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
667
HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
630
HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
668
HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-
 
669
                                        uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
631
HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
670
HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
-
 
671
                                       uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
632
 
672
 
633
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions);
673
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
674
                                                  uint16_t Size, uint32_t XferOptions);
634
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions);
675
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData,
-
 
676
                                                 uint16_t Size, uint32_t XferOptions);
635
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions);
677
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
-
 
678
                                                 uint32_t XferOptions);
636
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions);
679
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size,
-
 
680
                                                uint32_t XferOptions);
637
/**
681
/**
638
  * @}
682
  * @}
639
  */
683
  */
640
 
684
 
641
/** @addtogroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
685
/** @addtogroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
642
 * @{
686
  * @{
643
 */
687
  */
644
/******* I2C IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */
688
/******* I2C IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */
645
void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c);
689
void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c);
646
void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c);
690
void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c);
647
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c);
691
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c);
648
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c);
692
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c);
Line 730... Line 774...
730
                                                   IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST))
774
                                                   IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST))
731
 
775
 
732
#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_OTHER_FRAME)     || \
776
#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_OTHER_FRAME)     || \
733
                                                        ((REQUEST) == I2C_OTHER_AND_LAST_FRAME))
777
                                                        ((REQUEST) == I2C_OTHER_AND_LAST_FRAME))
734
 
778
 
-
 
779
#define I2C_RESET_CR2(__HANDLE__)                 ((__HANDLE__)->Instance->CR2 &= \
735
#define I2C_RESET_CR2(__HANDLE__)                 ((__HANDLE__)->Instance->CR2 &= (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_RD_WRN)))
780
                                                   (uint32_t)~((uint32_t)(I2C_CR2_SADD   | I2C_CR2_HEAD10R | \
-
 
781
                                                                          I2C_CR2_NBYTES | I2C_CR2_RELOAD  | \
-
 
782
                                                                          I2C_CR2_RD_WRN)))
736
 
783
 
737
#define I2C_GET_ADDR_MATCH(__HANDLE__)            ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) >> 16U))
784
#define I2C_GET_ADDR_MATCH(__HANDLE__)            ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) \
-
 
785
                                                              >> 16U))
738
#define I2C_GET_DIR(__HANDLE__)                   ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) >> 16U))
786
#define I2C_GET_DIR(__HANDLE__)                   ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) \
-
 
787
                                                             >> 16U))
739
#define I2C_GET_STOP_MODE(__HANDLE__)             ((__HANDLE__)->Instance->CR2 & I2C_CR2_AUTOEND)
788
#define I2C_GET_STOP_MODE(__HANDLE__)             ((__HANDLE__)->Instance->CR2 & I2C_CR2_AUTOEND)
740
#define I2C_GET_OWN_ADDRESS1(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR1 & I2C_OAR1_OA1))
789
#define I2C_GET_OWN_ADDRESS1(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR1 & I2C_OAR1_OA1))
741
#define I2C_GET_OWN_ADDRESS2(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR2 & I2C_OAR2_OA2))
790
#define I2C_GET_OWN_ADDRESS2(__HANDLE__)          ((uint16_t)((__HANDLE__)->Instance->OAR2 & I2C_OAR2_OA2))
742
 
791
 
743
#define IS_I2C_OWN_ADDRESS1(ADDRESS1)             ((ADDRESS1) <= 0x000003FFU)
792
#define IS_I2C_OWN_ADDRESS1(ADDRESS1)             ((ADDRESS1) <= 0x000003FFU)
744
#define IS_I2C_OWN_ADDRESS2(ADDRESS2)             ((ADDRESS2) <= (uint16_t)0x00FFU)
793
#define IS_I2C_OWN_ADDRESS2(ADDRESS2)             ((ADDRESS2) <= (uint16_t)0x00FFU)
745
 
794
 
746
#define I2C_MEM_ADD_MSB(__ADDRESS__)              ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & (uint16_t)(0xFF00U))) >> 8U)))
795
#define I2C_MEM_ADD_MSB(__ADDRESS__)              ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & \
-
 
796
                                                                         (uint16_t)(0xFF00U))) >> 8U)))
747
#define I2C_MEM_ADD_LSB(__ADDRESS__)              ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU))))
797
#define I2C_MEM_ADD_LSB(__ADDRESS__)              ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU))))
748
 
798
 
749
#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & (~I2C_CR2_RD_WRN)) : \
799
#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? \
750
                                                          (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_ADD10) | (I2C_CR2_START)) & (~I2C_CR2_RD_WRN)))
800
                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \
-
 
801
                                                                 (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & \
-
 
802
                                                                (~I2C_CR2_RD_WRN)) : \
-
 
803
                                                     (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \
-
 
804
                                                                 (I2C_CR2_ADD10) | (I2C_CR2_START)) & \
-
 
805
                                                                (~I2C_CR2_RD_WRN)))
751
 
806
 
752
#define I2C_CHECK_FLAG(__ISR__, __FLAG__)         ((((__ISR__) & ((__FLAG__) & I2C_FLAG_MASK)) == ((__FLAG__) & I2C_FLAG_MASK)) ? SET : RESET)
807
#define I2C_CHECK_FLAG(__ISR__, __FLAG__)         ((((__ISR__) & ((__FLAG__) & I2C_FLAG_MASK)) == \
-
 
808
                                                    ((__FLAG__) & I2C_FLAG_MASK)) ? SET : RESET)
753
#define I2C_CHECK_IT_SOURCE(__CR1__, __IT__)      ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET)
809
#define I2C_CHECK_IT_SOURCE(__CR1__, __IT__)      ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET)
754
/**
810
/**
755
  * @}
811
  * @}
756
  */
812
  */
757
 
813