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 |