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 | ||