1 /** 2 ****************************************************************************** 3 * @file tae32f53xx_ll_usb.h 4 * @author MCD Application Team 5 * @brief Header file of USB LL module. 6 * 7 ****************************************************************************** 8 * @attention 9 * 10 * <h2><center>© Copyright (c) 2020 Tai-Action. 11 * All rights reserved.</center></h2> 12 * 13 * This software is licensed by Tai-Action under BSD 3-Clause license, 14 * the "License"; You may not use this file except in compliance with the 15 * License. You may obtain a copy of the License at: 16 * opensource.org/licenses/BSD-3-Clause 17 * 18 ****************************************************************************** 19 */ 20 21 /* Define to prevent recursive inclusion -------------------------------------*/ 22 #ifndef _TAE32F53XX_LL_USB_H_ 23 #define _TAE32F53XX_LL_USB_H_ 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif /* __cplusplus */ 28 29 /* Includes ------------------------------------------------------------------*/ 30 #include "tae32f53xx_ll_def.h" 31 32 33 /** @addtogroup TAE32F53xx_LL_Driver 34 * @{ 35 */ 36 37 /** @addtogroup USB_LL 38 * @{ 39 */ 40 41 42 /* Exported constants --------------------------------------------------------*/ 43 /* Exported macro ------------------------------------------------------------*/ 44 /** @defgroup USB_LL_Exported_Macros USB LL Exported Macros 45 * @brief USB LL Exported Macros 46 * @{ 47 */ 48 49 /** 50 * @brief Set Function Address 51 * @param __USB__ Specifies USB peripheral 52 * @param func_addr Function Address 53 * @return None 54 */ 55 #define __LL_USB_FuncAddr_Set(__USB__, func_addr) \ 56 MODIFY_REG((__USB__)->FADDR, USB_FUNC_ADDR_Msk, ((func_addr & 0x7FUL) << USB_FUNC_ADDR_Pos)) 57 58 59 /** 60 * @brief Enable the SUSPENDM output 61 * @param __USB__ Specifies USB peripheral 62 * @return None 63 */ 64 #define __LL_USB_SuspendDMOut_En(__USB__) SET_BIT((__USB__)->POWER, USB_SUSPEND_DM_EN_Msk) 65 66 /** 67 * @brief Disable the SUSPENDM output 68 * @param __USB__ Specifies USB peripheral 69 * @return None 70 */ 71 #define __LL_USB_SuspendDMOut_Dis(__USB__) CLEAR_BIT((__USB__)->POWER, USB_SUSPEND_DM_EN_Msk) 72 73 /** 74 * @brief Enable HighSpeed 75 * @param __USB__ Specifies USB peripheral 76 * @return None 77 */ 78 #define __LL_USB_HighSpeed_En(__USB__) SET_BIT((__USB__)->POWER, USB_HS_EN_Msk) 79 80 /** 81 * @brief Disable HighSpeed 82 * @param __USB__ Specifies USB peripheral 83 * @return None 84 */ 85 #define __LL_USB_HighSpeed_Dis(__USB__) CLEAR_BIT((__USB__)->POWER, USB_HS_EN_Msk) 86 87 /** 88 * @brief Enable Soft Connect 89 * @param __USB__ Specifies USB peripheral 90 * @return None 91 */ 92 #define __LL_USB_SoftConn_En(__USB__) SET_BIT((__USB__)->POWER, USB_SOFT_CONN_EN_Msk) 93 94 /** 95 * @brief Disable Soft Connect 96 * @param __USB__ Specifies USB peripheral 97 * @return None 98 */ 99 #define __LL_USB_SoftConn_Dis(__USB__) CLEAR_BIT((__USB__)->POWER, USB_SOFT_CONN_EN_Msk) 100 101 102 /** 103 * @brief Get Endpoint 0 and TX Endpoint Interrupt Status 104 * @param __USB__ Specifies USB peripheral 105 * @return Endpoint 0 and TX Endpoint Interrupt Status 106 */ 107 #define __LL_USB_EP0AndEPxTX_IntSta_Get(__USB__) ((__USB__)->INTRTX) 108 109 110 /** 111 * @brief Get RX Endpoint Interrupt Status 112 * @param __USB__ Specifies USB peripheral 113 * @return RX Interrupt Status 114 */ 115 #define __LL_USB_EPx_RXIntSta_Get(__USB__) ((__USB__)->INTRRX) 116 117 118 /** 119 * @brief Enable Endpoint 0 and TX Endpoint Interrupt 120 * @param __USB__ Specifies USB peripheral 121 * @param ep_num USB_EpNumETypeDef Type Endpoint Number 122 * @return None 123 */ 124 #define __LL_USB_EP0AndEPxTX_Int_EN(__USB__, ep_num) \ 125 do { \ 126 if(ep_num >= EP_NUMS){ \ 127 break; \ 128 } \ 129 uint16_t ep0_and_epxtx_int_en_bitmask[] = {USB_EP0_INT_EN_Msk, USB_TX_EP1_INT_EN_Msk, USB_TX_EP2_INT_EN_Msk}; \ 130 SET_BIT((__USB__)->INTRTXE, ep0_and_epxtx_int_en_bitmask[ep_num]); \ 131 } while(0) 132 133 /** 134 * @brief Disable Endpoint 0 and TX Endpoint Interrupt 135 * @param __USB__ Specifies USB peripheral 136 * @param ep_num USB_EpNumETypeDef Type Endpoint Number 137 * @return None 138 */ 139 #define __LL_USB_EP0AndEPxTX_Int_Dis(__USB__, ep_num) \ 140 do { \ 141 if(ep_num >= EP_NUMS){ \ 142 break; \ 143 } \ 144 uint16_t ep0_and_epxtx_int_en_bitmask[] = {USB_EP0_INT_EN_Msk, USB_TX_EP1_INT_EN_Msk, USB_TX_EP2_INT_EN_Msk}; \ 145 CLEAR_BIT((__USB__)->INTRTXE, ep0_and_epxtx_int_en_bitmask[ep_num]); \ 146 } while(0) 147 148 149 /** 150 * @brief Enable RX Endpoint Interrupt 151 * @param __USB__ Specifies USB peripheral 152 * @param ep_num USB_EpNumETypeDef Type Endpoint Number 153 * @return None 154 */ 155 #define __LL_USB_EPx_RXInt_En(__USB__, ep_num) \ 156 do { \ 157 if(ep_num >= EP_NUMS){ \ 158 break; \ 159 } \ 160 uint16_t epxrx_int_en_bitmask[] = {0, USB_RX_EP1_INT_EN_Msk, USB_RX_EP2_INT_EN_Msk}; \ 161 SET_BIT((__USB__)->INTRRXE, epxrx_int_en_bitmask[ep_num]); \ 162 } while(0) 163 164 /** 165 * @brief Disable RX Endpoint Interrupt 166 * @param __USB__ Specifies USB peripheral 167 * @param ep_num USB_EpNumETypeDef Type Endpoint Number 168 * @return None 169 */ 170 #define __LL_USB_EPx_RXInt_Dis(__USB__, ep_num) \ 171 do { \ 172 if(ep_num >= EP_NUMS){ \ 173 break; \ 174 } \ 175 uint16_t epxrx_int_en_bitmask[] = {0, USB_RX_EP1_INT_EN_Msk, USB_RX_EP2_INT_EN_Msk}; \ 176 CLEAR_BIT((__USB__)->INTRRXE, epxrx_int_en_bitmask[ep_num]); \ 177 } while(0) 178 179 180 /** 181 * @brief Get USB Controler Interrupt Status 182 * @param __USB__ Specifies USB peripheral 183 * @return USB Controler Interrupt Status 184 */ 185 #define __LL_USB_IntSta_Get(__USB__) (READ_BIT((__USB__)->INTRUSB, USB_CTRL_INT_ALL_Msk) >> USB_SUSPEND_INT_STA_Pos) 186 187 188 /** 189 * @brief Enable USB Controler Interrupt 190 * @param __USB__ Specifies USB peripheral 191 * @param int_bit_mask Interrupt BitMask to Be Enable 192 * @return None 193 */ 194 #define __LL_USB_Int_EN(__USB__, int_bit_mask) SET_BIT((__USB__)->INTRUSBE, int_bit_mask) 195 196 /** 197 * @brief Disable USB Controler Interrupt 198 * @param __USB__ Specifies USB peripheral 199 * @param int_bit_mask Interrupt BitMask to be Disable 200 * @return None 201 */ 202 #define __LL_USB_Int_Dis(__USB__, int_bit_mask) CLEAR_BIT((__USB__)->INTRUSBE, int_bit_mask) 203 204 205 /** 206 * @brief Get Frame Number 207 * @param __USB__ Specifies USB peripheral 208 * @return Frame Number 209 */ 210 #define __LL_USB_FrameNum_Get(__USB__) (READ_BIT((__USB__)->FRAME, USB_FRAME_NUM_Msk) >> USB_FRAME_NUM_Pos) 211 212 213 /** 214 * @brief Set Endpoint Index 215 * @param __USB__ Specifies USB peripheral 216 * @param idx Index to be Set 217 * @return None 218 */ 219 #define __LL_USB_EPIndex_Set(__USB__, idx) \ 220 MODIFY_REG((__USB__)->INDEX, USB_EP_INDEX_Msk, ((idx & 0xFUL) << USB_EP_INDEX_Pos)) 221 222 223 /** 224 * @brief Set TX Max Payload 225 * @note Must Set Endpoint Index first Before Call This Macro Function 226 * @param __USB__ Specifies USB peripheral 227 * @param max_payload Max Payload to be Set 228 * @return None 229 */ 230 #define __LL_USB_EPx_TXMaxPayload_Set(__USB__, max_payload) \ 231 MODIFY_REG((__USB__)->TXMAXP, USB_EPX_TX_MAX_PAYLD_Msk, ((max_payload & 0xFFFFUL) << USB_EPX_TX_MAX_PAYLD_Pos)) 232 233 /** 234 * @brief Get TX Max Payload 235 * @note Must Set Endpoint Index first Before Call This Macro Function 236 * @param __USB__ Specifies USB peripheral 237 * @return TX Max Payload 238 */ 239 #define __LL_USB_EPx_TXMaxPayload_Get(__USB__) \ 240 (READ_BIT((__USB__)->TXMAXP, USB_EPX_TX_MAX_PAYLD_Msk) >> USB_EPX_TX_MAX_PAYLD_Pos) 241 242 243 /** 244 * @brief Judge Endpoint 0 RX Packet Ready or not 245 * @param __USB__ Specifies USB peripheral 246 * @retval 0 RX Packet Not Ready 247 * @retval 1 RX Packet Ready 248 */ 249 #define __LL_USB_EP0_IsRXPktRdy(__USB__) (READ_BIT((__USB__)->TX_CSR0, USB_EP0_RX_PKT_RDY_Msk) >> USB_EP0_RX_PKT_RDY_Pos) 250 251 /** 252 * @brief Clear Endpoint 0 RX Packet Ready 253 * @param __USB__ Specifies USB peripheral 254 * @return None 255 */ 256 #define __LL_USB_EP0_RXPktRdy_Clr(__USB__) SET_BIT((__USB__)->TX_CSR0, USB_EP0_CLR_RX_PKT_RDY_Msk) 257 258 /** 259 * @brief Set Endpoint 0 TX Packet Ready 260 * @param __USB__ Specifies USB peripheral 261 * @return None 262 */ 263 #define __LL_USB_EP0_TXPktRdy_Set(__USB__) SET_BIT((__USB__)->TX_CSR0, USB_EP0_TX_PKT_RDY_Msk) 264 265 /** 266 * @brief Judge Endpoint 0 TX Packet Ready or not 267 * @param __USB__ Specifies USB peripheral 268 * @retval 0 TX Packet Not Ready 269 * @retval 1 TX Packet Ready 270 */ 271 #define __LL_USB_EP0_IsTXPktRdy(__USB__) (READ_BIT((__USB__)->TX_CSR0, USB_EP0_TX_PKT_RDY_Msk) >> USB_EP0_TX_PKT_RDY_Pos) 272 273 /** 274 * @brief Set Endpoint 0 to Send Stall 275 * @param __USB__ Specifies USB peripheral 276 * @return None 277 */ 278 #define __LL_USB_EP0_SendStall_Set(__USB__) SET_BIT((__USB__)->TX_CSR0, USB_EP0_SEND_STALL_Msk) 279 280 /** 281 * @brief Judge Endpoint 0 has Sent Stall or not 282 * @param __USB__ Specifies USB peripheral 283 * @retval 0 Hasn't Sent Stall 284 * @retval 1 Has Sent Stall 285 */ 286 #define __LL_USB_EP0_IsSentStall(__USB__) (READ_BIT((__USB__)->TX_CSR0, USB_EP0_SENT_STALL_Msk) >> USB_EP0_SENT_STALL_Pos) 287 288 /** 289 * @brief Clear Endpoint 0 Sent Stall Status 290 * @param __USB__ Specifies USB peripheral 291 * @return None 292 */ 293 #define __LL_USB_EP0_SentStall_Clr(__USB__) CLEAR_BIT((__USB__)->TX_CSR0, USB_EP0_SENT_STALL_Msk) 294 295 /** 296 * @brief Set Endpoint 0 Data End 297 * @param __USB__ Specifies USB peripheral 298 * @return None 299 */ 300 #define __LL_USB_EP0_DataEnd_Set(__USB__) SET_BIT((__USB__)->TX_CSR0, USB_EP0_DATA_END_Msk) 301 302 /** 303 * @brief Judge Endpoint 0 has SetupEnd or not 304 * @param __USB__ Specifies USB peripheral 305 * @retval 0 Hasn't Setup End 306 * @retval 1 Has Setup End 307 */ 308 #define __LL_USB_EP0_IsSetupEnd(__USB__) (READ_BIT((__USB__)->TX_CSR0, USB_EP0_SETUP_END_Msk) >> USB_EP0_SETUP_END_Pos) 309 310 /** 311 * @brief Clear Endpoint 0 SetupEnd Status 312 * @param __USB__ Specifies USB peripheral 313 * @return None 314 */ 315 #define __LL_USB_EP0_SetupEnd_Clr(__USB__) SET_BIT((__USB__)->TX_CSR0, USB_EP0_CLR_SETUP_END_Msk) 316 317 /** 318 * @brief Flush Endpoint 0 FIFO 319 * @param __USB__ Specifies USB peripheral 320 * @return None 321 */ 322 #define __LL_USB_EP0_FlushFIFO(__USB__) SET_BIT((__USB__)->TX_CSR0, USB_EP0_FLUSH_FIFO_Msk) 323 324 325 /** 326 * @brief Enable TX Packet Ready Auto Set Function 327 * @note Must Set Endpoint Index first Before Call This Macro Function 328 * @param __USB__ Specifies USB peripheral 329 * @return None 330 */ 331 #define __LL_USB_EPx_TXPktRdyAutoSet_En(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_AUTO_SET_Msk) 332 333 /** 334 * @brief Disable TX Packet Ready Auto Set Function 335 * @note Must Set Endpoint Index first Before Call This Macro Function 336 * @param __USB__ Specifies USB peripheral 337 * @return None 338 */ 339 #define __LL_USB_EPx_TXPktRdyAutoSet_Dis(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_TX_AUTO_SET_Msk) 340 341 /** 342 * @brief Enable Endpoint TX ISO 343 * @note Must Set Endpoint Index first Before Call This Macro Function 344 * @param __USB__ Specifies USB peripheral 345 * @return None 346 */ 347 #define __LL_USB_EPx_TXISO_En(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_ISO_EN_Msk) 348 349 /** 350 * @brief Disable Endpoint TX ISO 351 * @note Must Set Endpoint Index first Before Call This Macro Function 352 * @param __USB__ Specifies USB peripheral 353 * @return None 354 */ 355 #define __LL_USB_EPx_TXISO_Dis(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_TX_ISO_EN_Msk) 356 357 /** 358 * @brief Enable Endpoint TX 359 * @note Must Set Endpoint Index first Before Call This Macro Function 360 * @param __USB__ Specifies USB peripheral 361 * @return None 362 */ 363 #define __LL_USB_EPx_TX_En(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_DIR_MODE_Msk) 364 365 /** 366 * @brief Enable Endpoint RX 367 * @note Must Set Endpoint Index first Before Call This Macro Function 368 * @param __USB__ Specifies USB peripheral 369 * @return None 370 */ 371 #define __LL_USB_EPx_RX_En(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_DIR_MODE_Msk) 372 373 /** 374 * @brief Enable Endpoint TX DMA Request 375 * @note Must Set Endpoint Index first Before Call This Macro Function 376 * @param __USB__ Specifies USB peripheral 377 * @return None 378 */ 379 #define __LL_USB_EPx_TXDMAReq_En(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_DMA_REQ_EN_Msk) 380 381 /** 382 * @brief Disable Endpoint TX DMA Request 383 * @note Must Set Endpoint Index first Before Call This Macro Function 384 * @param __USB__ Specifies USB peripheral 385 * @return None 386 */ 387 #define __LL_USB_EPx_TXDMAReq_Dis(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_TX_DMA_REQ_EN_Msk) 388 389 /** 390 * @brief Set Endpoint TX to Force Data Toggle 391 * @note Must Set Endpoint Index first Before Call This Macro Function 392 * @param __USB__ Specifies USB peripheral 393 * @return None 394 */ 395 #define __LL_USB_EPx_TXForceDataTog_Set(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_FRC_DATA_TOG_Msk) 396 397 /** 398 * @brief Clear Endpoint TX to Force Data Toggle 399 * @note Must Set Endpoint Index first Before Call This Macro Function 400 * @param __USB__ Specifies USB peripheral 401 * @return None 402 */ 403 #define __LL_USB_EPx_TXForceDataTog_Clr(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_TX_FRC_DATA_TOG_Msk) 404 405 /** 406 * @brief Set Endpoint TX DMA Request Mode to 0 407 * @note Must Set Endpoint Index first Before Call This Macro Function 408 * @param __USB__ Specifies USB peripheral 409 * @return None 410 */ 411 #define __LL_USB_EPx_TXDMAReqMode0_Set(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_TX_DMA_REQ_MODE_Msk) 412 413 /** 414 * @brief Set Endpoint TX DMA Request Mode to 1 415 * @note Must Set Endpoint Index first Before Call This Macro Function 416 * @param __USB__ Specifies USB peripheral 417 * @return None 418 */ 419 #define __LL_USB_EPx_TXDMAReqMode1_Set(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_DMA_REQ_MODE_Msk) 420 421 /** 422 * @brief Judge TX ISO Endpoint Is Incomplete or not 423 * @note Must Set Endpoint Index first Before Call This Macro Function 424 * @param __USB__ Specifies USB peripheral 425 * @retval 0 Complete 426 * @retval 1 Incomplete 427 */ 428 #define __LL_USB_EPx_IsTXISOInComp(__USB__) \ 429 (READ_BIT((__USB__)->TX_CSRX, USB_EPX_TX_ISO_INCOMP_Msk) >> USB_EPX_TX_ISO_INCOMP_Pos) 430 431 /** 432 * @brief Clear TX Endpoint Data Toggle 433 * @note Must Set Endpoint Index first Before Call This Macro Function 434 * @param __USB__ Specifies USB peripheral 435 * @return None 436 */ 437 #define __LL_USB_EPx_TXDataTog_Clr(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_CLR_DATA_TOG_Msk) 438 439 /** 440 * @brief Judge TX Endpoint has Sent Stall or not 441 * @note Must Set Endpoint Index first Before Call This Macro Function 442 * @param __USB__ Specifies USB peripheral 443 * @retval 0 Hasn't Sent Stall 444 * @retval 1 Has Sent Stall 445 */ 446 #define __LL_USB_EPx_IsTXSentStall(__USB__) \ 447 (READ_BIT((__USB__)->TX_CSRX, USB_EPX_TX_SENT_STALL_Msk) >> USB_EPX_TX_SENT_STALL_Pos) 448 449 /** 450 * @brief Clear TX Endpoint Sent Stall Status 451 * @note Must Set Endpoint Index first Before Call This Macro Function 452 * @param __USB__ Specifies USB peripheral 453 * @return None 454 */ 455 #define __LL_USB_EPx_TXSentStall_Clr(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_TX_SENT_STALL_Msk) 456 457 /** 458 * @brief Enable TX Endpoint to Send Stall 459 * @note Must Set Endpoint Index first Before Call This Macro Function 460 * @param __USB__ Specifies USB peripheral 461 * @return None 462 */ 463 #define __LL_USB_EPx_TXSendStall_En(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_SEND_STALL_Msk) 464 465 /** 466 * @brief Disable TX Endpoint to Send Stall 467 * @note Must Set Endpoint Index first Before Call This Macro Function 468 * @param __USB__ Specifies USB peripheral 469 * @return None 470 */ 471 #define __LL_USB_EPx_TXSendStall_Dis(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_TX_SEND_STALL_Msk) 472 473 /** 474 * @brief Flush TX Endpoint FIFO 475 * @note Must Set Endpoint Index first Before Call This Macro Function 476 * @param __USB__ Specifies USB peripheral 477 * @return None 478 */ 479 #define __LL_USB_EPx_TXFlushFIFO(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_FLUSH_FIFO_Msk) 480 481 /** 482 * @brief Judge TX Endpoint FIFO Is UnderRun or not 483 * @note Must Set Endpoint Index first Before Call This Macro Function 484 * @param __USB__ Specifies USB peripheral 485 * @retval 0 Isn't UnderRun 486 * @retval 1 Is UnderRun 487 */ 488 #define __LL_USB_EPx_IsTXFIFOUnderRun(__USB__) \ 489 (READ_BIT((__USB__)->TX_CSRX, USB_EPX_TX_UNDER_RUN_Msk) >> USB_EPX_TX_UNDER_RUN_Pos) 490 491 /** 492 * @brief Clear TX Endpoint UnderRun Status 493 * @note Must Set Endpoint Index first Before Call This Macro Function 494 * @param __USB__ Specifies USB peripheral 495 * @return None 496 */ 497 #define __LL_USB_EPx_TXFIFOUnderRun_Clr(__USB__) CLEAR_BIT((__USB__)->TX_CSRX, USB_EPX_TX_UNDER_RUN_Msk) 498 499 /** 500 * @brief Judge TX Endpoint FIFO Is NoEmpty or not 501 * @note Must Set Endpoint Index first Before Call This Macro Function 502 * @param __USB__ Specifies USB peripheral 503 * @retval 0 Isn't NoEmpty 504 * @retval 1 Is NoEmpty 505 */ 506 #define __LL_USB_EPx_IsTXFIFONoEmpty(__USB__) \ 507 (READ_BIT((__USB__)->TX_CSRX, USB_EPX_TX_FIFO_NOT_EPY_Msk) >> USB_EPX_TX_FIFO_NOT_EPY_Pos) 508 509 /** 510 * @brief Set TX Endpoint Packet Ready 511 * @note Must Set Endpoint Index first Before Call This Macro Function 512 * @param __USB__ Specifies USB peripheral 513 * @return None 514 */ 515 #define __LL_USB_EPx_TXPktRdy_Set(__USB__) SET_BIT((__USB__)->TX_CSRX, USB_EPX_TX_PKT_RDY_Msk) 516 517 /** 518 * @brief Judge Endpoint TX Packet Ready or not 519 * @note Must Set Endpoint Index first Before Call This Macro Function 520 * @param __USB__ Specifies USB peripheral 521 * @retval 0 Isn't Packet Ready 522 * @retval 1 Is Packet Ready 523 */ 524 #define __LL_USB_EPx_IsTXPktRdy(__USB__) \ 525 (READ_BIT((__USB__)->TX_CSRX, USB_EPX_TX_PKT_RDY_Msk) >> USB_EPX_TX_PKT_RDY_Pos) 526 527 528 /** 529 * @brief Set RX Max Payload 530 * @note Must Set Endpoint Index first Before Call This Macro Function 531 * @param __USB__ Specifies USB peripheral 532 * @param max_payload Max Payload to be Set 533 * @return None 534 */ 535 #define __LL_USB_EPx_RXMaxPayload_Set(__USB__, max_payload) \ 536 MODIFY_REG((__USB__)->RXMAXP, USB_EPX_RX_MAX_PAYLD_Msk, ((max_payload & 0xFFFFUL) << USB_EPX_RX_MAX_PAYLD_Pos)) 537 538 /** 539 * @brief Get RX Max Payload 540 * @note Must Set Endpoint Index first Before Call This Macro Function 541 * @param __USB__ Specifies USB peripheral 542 * @return RX Max Payload 543 */ 544 #define __LL_USB_EPx_RXMaxPayload_Get(__USB__) \ 545 (READ_BIT((__USB__)->RXMAXP, USB_EPX_RX_MAX_PAYLD_Msk) >> USB_EPX_RX_MAX_PAYLD_Pos) 546 547 548 /** 549 * @brief Enable RX Packet Ready Auto Clear Function 550 * @param __USB__ Specifies USB peripheral 551 * @return None 552 */ 553 #define __LL_USB_EPx_RXPktRdyAutoClr_En(__USB__) SET_BIT((__USB__)->RXCSRN, USB_EPX_RX_AUTO_CLR_Msk) 554 555 /** 556 * @brief Disable RX Packet Ready Auto Clear Function 557 * @param __USB__ Specifies USB peripheral 558 * @return None 559 */ 560 #define __LL_USB_EPx_RXPktRdyAutoClr_Dis(__USB__) CLEAR_BIT((__USB__)->RXCSRN, USB_EPX_RX_AUTO_CLR_Msk) 561 562 /** 563 * @brief Enable Endpoint RX ISO 564 * @note Must Set Endpoint Index first Before Call This Macro Function 565 * @param __USB__ Specifies USB peripheral 566 * @return None 567 */ 568 #define __LL_USB_EPx_RXISO_En(__USB__) SET_BIT((__USB__)->RXCSRN, USB_EPX_RX_ISO_EN_Msk) 569 570 /** 571 * @brief Disable Endpoint RX ISO 572 * @note Must Set Endpoint Index first Before Call This Macro Function 573 * @param __USB__ Specifies USB peripheral 574 * @return None 575 */ 576 #define __LL_USB_EPx_RXISO_Dis(__USB__) CLEAR_BIT((__USB__)->RXCSRN, USB_EPX_RX_ISO_EN_Msk) 577 578 /** 579 * @brief Enable Endpoint RX DMA Request 580 * @note Must Set Endpoint Index first Before Call This Macro Function 581 * @param __USB__ Specifies USB peripheral 582 * @return None 583 */ 584 #define __LL_USB_EPx_RXDMAReq_En(__USB__) SET_BIT((__USB__)->RXCSRN, USB_EPX_RX_DMQ_REQ_EN_Msk) 585 586 /** 587 * @brief Disable Endpoint RX DMA Request 588 * @note Must Set Endpoint Index first Before Call This Macro Function 589 * @param __USB__ Specifies USB peripheral 590 * @return None 591 */ 592 #define __LL_USB_EPx_RXDMAReq_Dis(__USB__) CLEAR_BIT((__USB__)->RXCSRN, USB_EPX_RX_DMQ_REQ_EN_Msk) 593 594 /** 595 * @brief Judge RX ISO Endpoint PID Error or not 596 * @note Must Set Endpoint Index first Before Call This Macro Function 597 * @param __USB__ Specifies USB peripheral 598 * @retval 0 Isn't PID Error 599 * @retval 1 Is PID Error 600 */ 601 #define __LL_USB_EPx_IsRXISOPIDErr(__USB__) \ 602 (READ_BIT((__USB__)->RXCSRN, USB_EPX_RX_ISO_PID_ERR_Msk) >> USB_EPX_RX_ISO_PID_ERR_Pos) 603 604 /** 605 * @brief Set Endpoint RX DMA Request Mode to 0 606 * @note Must Set Endpoint Index first Before Call This Macro Function 607 * @param __USB__ Specifies USB peripheral 608 * @return None 609 */ 610 #define __LL_USB_EPx_RXDMAReqMode0_Set(__USB__) CLEAR_BIT((__USB__)->RXCSRN, USB_EPX_RX_DMA_REQ_MODE_Msk) 611 612 /** 613 * @brief Set Endpoint RX DMA Request Mode to 1 614 * @note Must Set Endpoint Index first Before Call This Macro Function 615 * @param __USB__ Specifies USB peripheral 616 * @return None 617 */ 618 #define __LL_USB_EPx_RXDMAReqMode1_Set(__USB__) SET_BIT((__USB__)->RXCSRN, USB_EPX_RX_DMA_REQ_MODE_Msk) 619 620 /** 621 * @brief Judge RX ISO Endpoint Is Incomplete or not 622 * @note Must Set Endpoint Index first Before Call This Macro Function 623 * @param __USB__ Specifies USB peripheral 624 * @retval 0 Complete 625 * @retval 1 Incomplete 626 */ 627 #define __LL_USB_EPx_IsRXISOInComp(__USB__) \ 628 (READ_BIT((__USB__)->RXCSRN, USB_EPX_RX_ISO_INCOMP_Msk) >> USB_EPX_RX_ISO_INCOMP_Pos) 629 630 /** 631 * @brief Clear RX Endpoint Data Toggle 632 * @note Must Set Endpoint Index first Before Call This Macro Function 633 * @param __USB__ Specifies USB peripheral 634 * @return None 635 */ 636 #define __LL_USB_EPx_RXDataTog_Clr(__USB__) SET_BIT((__USB__)->RXCSRN, USB_EPX_RX_CLR_DATA_TOG_Msk) 637 638 /** 639 * @brief Judge RX Endpoint has Sent Stall or not 640 * @note Must Set Endpoint Index first Before Call This Macro Function 641 * @param __USB__ Specifies USB peripheral 642 * @retval 0 Hasn't Sent Stall 643 * @retval 1 Has Sent Stall 644 */ 645 #define __LL_USB_EPx_IsRXSentStall(__USB__) \ 646 (READ_BIT((__USB__)->RXCSRN, USB_EPX_RX_SENT_STALL_Msk) >> USB_EPX_RX_SENT_STALL_Pos) 647 648 /** 649 * @brief Clear RX Endpoint Sent Stall Status 650 * @note Must Set Endpoint Index first Before Call This Macro Function 651 * @param __USB__ Specifies USB peripheral 652 * @return None 653 */ 654 #define __LL_USB_EPx_RXSentStall_Clr(__USB__) CLEAR_BIT((__USB__)->RXCSRN, USB_EPX_RX_SENT_STALL_Msk) 655 656 /** 657 * @brief Enable RX Endpoint to Send Stall 658 * @note Must Set Endpoint Index first Before Call This Macro Function 659 * @param __USB__ Specifies USB peripheral 660 * @return None 661 */ 662 #define __LL_USB_EPx_RXSendStall_En(__USB__) SET_BIT((__USB__)->RXCSRN, USB_EPX_RX_SEND_STALL_Msk) 663 664 /** 665 * @brief Disable RX Endpoint to Send Stall 666 * @note Must Set Endpoint Index first Before Call This Macro Function 667 * @param __USB__ Specifies USB peripheral 668 * @return None 669 */ 670 #define __LL_USB_EPx_RXSendStall_Dis(__USB__) CLEAR_BIT((__USB__)->RXCSRN, USB_EPX_RX_SEND_STALL_Msk) 671 672 /** 673 * @brief Flush RX Endpoint FIFO 674 * @note Must Set Endpoint Index first Before Call This Macro Function 675 * @param __USB__ Specifies USB peripheral 676 * @return None 677 */ 678 #define __LL_USB_EPx_RXFlushFIFO(__USB__) SET_BIT((__USB__)->RXCSRN, USB_EPX_RX_FLUSH_FIFO_Msk) 679 680 /** 681 * @brief Judge RX ISO Endpoint Data Error or not 682 * @note Must Set Endpoint Index first Before Call This Macro Function 683 * @param __USB__ Specifies USB peripheral 684 * @retval 0 Isn't Data Error 685 * @retval 1 Is Data Error 686 */ 687 #define __LL_USB_EPx_IsISORXDataErr(__USB__) \ 688 (READ_BIT((__USB__)->RXCSRN, USB_EPX_RX_ISO_DATA_ERR_Msk) >> USB_EPX_RX_ISO_DATA_ERR_Pos) 689 690 /** 691 * @brief Judge RX ISO Endpoint FIFO Is OverRun or not 692 * @note Must Set Endpoint Index first Before Call This Macro Function 693 * @param __USB__ Specifies USB peripheral 694 * @retval 0 Isn't OverRun 695 * @retval 1 Is OverRun 696 */ 697 #define __LL_USB_EPx_IsISORXFIFOOverRun(__USB__) \ 698 (READ_BIT((__USB__)->RXCSRN, USB_EPX_RX_OVER_RUN_Msk) >> USB_EPX_RX_OVER_RUN_Pos) 699 700 /** 701 * @brief Clear RX ISO Endpoint OverrRun Status 702 * @note Must Set Endpoint Index first Before Call This Macro Function 703 * @param __USB__ Specifies USB peripheral 704 * @return None 705 */ 706 #define __LL_USB_EPx_ISORXFIFOOverRun_Clr(__USB__) CLEAR_BIT((__USB__)->RXCSRN, USB_EPX_RX_OVER_RUN_Msk) 707 708 /** 709 * @brief Judge RX FIFO Full or not 710 * @note Must Set Endpoint Index first Before Call This Macro Function 711 * @param __USB__ Specifies USB peripheral 712 * @retval 0 Isn't Full 713 * @retval 1 Is Full 714 */ 715 #define __LL_USB_EPx_IsRXFIFOFull(__USB__) \ 716 (READ_BIT((__USB__)->RXCSRN, USB_EPX_RX_FIFO_FULL_Msk) >> USB_EPX_RX_FIFO_FULL_Pos) 717 718 /** 719 * @brief Judge Endpoint RX Packet Ready or not 720 * @note Must Set Endpoint Index first Before Call This Macro Function 721 * @param __USB__ Specifies USB peripheral 722 * @retval 0 Isn't Packet Ready 723 * @retval 1 Is Packet Ready 724 */ 725 #define __LL_USB_EPx_IsRXPktRdy(__USB__) \ 726 (READ_BIT((__USB__)->RXCSRN, USB_EPX_RX_PKT_RDY_Msk) >> USB_EPX_RX_PKT_RDY_Pos) 727 728 /** 729 * @brief Clear RX Endpoint Packet Ready Status 730 * @note Must Set Endpoint Index first Before Call This Macro Function 731 * @param __USB__ Specifies USB peripheral 732 * @return None 733 */ 734 #define __LL_USB_EPx_RXPktRdy_Clr(__USB__) CLEAR_BIT((__USB__)->RXCSRN, USB_EPX_RX_PKT_RDY_Msk) 735 736 737 /** 738 * @brief Get Endpoint RX Counter 739 * @note Must Set Endpoint Index first Before Call This Macro Function 740 * @param __USB__ Specifies USB peripheral 741 * @return RX Counter 742 */ 743 #define __LL_USB_RXCount_Get(__USB__) (READ_BIT((__USB__)->RXCOUNT, USB_RX_CNT_Msk) >> USB_RX_CNT_Pos) 744 745 746 /** 747 * @brief Write Single Byte to Endpoint TX FIFO 748 * @param __USB__ Specifies USB peripheral 749 * @param ep_num USB_EpNumETypeDef Type Endpoint Number 750 * @param dat Data to be Written 751 * @return None 752 */ 753 #define __LL_USB_EPFIFOWriteByte(__USB__, ep_num, dat) do{ (__USB__)->EP_FIFO[ep_num][0] = dat; }while(0) 754 755 /** 756 * @brief Read Single Byte form Endpoint RX FIFO 757 * @param __USB__ Specifies USB peripheral 758 * @param ep_num USB_EpNumETypeDef Type Endpoint Number 759 * @return Read Byte Data 760 */ 761 #define __LL_USB_EPFIFOReadByte(__USB__, ep_num) ((__USB__)->EP_FIFO[ep_num][0]) 762 763 764 /** 765 * @brief Config DM Output Hardware 766 * @param __USB__ Specifies USB peripheral 767 * @return None 768 */ 769 #define __LL_USB_DMOutputHardware(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_DM_OE_EN_Msk) 770 771 /** 772 * @brief Config DM Output Normal 773 * @param __USB__ Specifies USB peripheral 774 * @return None 775 */ 776 #define __LL_USB_DMOutputNormal(__USB__) SET_BIT((__USB__)->UCFG0, USB_DM_OE_EN_Msk | USB_DM_OE_Msk) 777 778 /** 779 * @brief Disable DM Output 780 * @param __USB__ Specifies USB peripheral 781 * @return None 782 */ 783 #define __LL_USB_DMOutputDisable(__USB__) MODIFY_REG((__USB__)->UCFG0, 0x3UL<<USB_DM_OE_EN_Pos, 0x1UL<<USB_DM_OE_EN_Pos) 784 785 /** 786 * @brief Config DP Output Hardware 787 * @param __USB__ Specifies USB peripheral 788 * @return None 789 */ 790 #define __LL_USB_DPOutputHardware(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_DP_OE_EN_Msk) 791 792 /** 793 * @brief Config DP Output Normal 794 * @param __USB__ Specifies USB peripheral 795 * @return None 796 */ 797 #define __LL_USB_DPOutputNormal(__USB__) SET_BIT((__USB__)->UCFG0, USB_DP_OE_EN_Msk | USB_DP_OE_Msk) 798 799 /** 800 * @brief Disable DP Output 801 * @param __USB__ Specifies USB peripheral 802 * @return None 803 */ 804 #define __LL_USB_DPOutputDisable(__USB__) MODIFY_REG((__USB__)->UCFG0, 0x3UL<<USB_DP_OE_EN_Pos, 0x1UL<<USB_DP_OE_EN_Pos) 805 806 /** 807 * @brief Config DM Input Hardware 808 * @param __USB__ Specifies USB peripheral 809 * @return None 810 */ 811 #define __LL_USB_DMInputHardware(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_DM_IE_EN_Msk) 812 813 /** 814 * @brief Config DM Input Normal 815 * @param __USB__ Specifies USB peripheral 816 * @return None 817 */ 818 #define __LL_USB_DMInputNormal(__USB__) SET_BIT((__USB__)->UCFG0, USB_DM_IE_EN_Msk | USB_DM_IE_Msk) 819 820 /** 821 * @brief Disable DM Input 822 * @param __USB__ Specifies USB peripheral 823 * @return None 824 */ 825 #define __LL_USB_DMInputDisable(__USB__) MODIFY_REG((__USB__)->UCFG0, 0x3UL<<USB_DM_IE_EN_Pos, 0x1UL<<USB_DM_IE_EN_Pos) 826 827 /** 828 * @brief Config DP Input Hardware 829 * @param __USB__ Specifies USB peripheral 830 * @return None 831 */ 832 #define __LL_USB_DPInputHardware(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_DP_IE_EN_Msk) 833 834 /** 835 * @brief Config DP Input Normal 836 * @param __USB__ Specifies USB peripheral 837 * @return None 838 */ 839 #define __LL_USB_DPInputNormal(__USB__) SET_BIT((__USB__)->UCFG0, USB_DP_IE_EN_Msk | USB_DP_IE_Msk) 840 841 /** 842 * @brief Disable DP Input 843 * @param __USB__ Specifies USB peripheral 844 * @return None 845 */ 846 #define __LL_USB_DPInputDisable(__USB__) MODIFY_REG((__USB__)->UCFG0, 0x3UL<<USB_DP_IE_EN_Pos, 0x1UL<<USB_DP_IE_EN_Pos) 847 848 /** 849 * @brief Config DM PullDown Hardware 850 * @param __USB__ Specifies USB peripheral 851 * @return None 852 */ 853 #define __LL_USB_DMPullDownHardware(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_DM_PD_EN_Msk) 854 855 /** 856 * @brief Config DM PullDown Normal 857 * @param __USB__ Specifies USB peripheral 858 * @return None 859 */ 860 #define __LL_USB_DMPullDownNormal(__USB__) SET_BIT((__USB__)->UCFG0, USB_DM_PD_EN_Msk | USB_DM_PD_Msk) 861 862 /** 863 * @brief Disable DM PullDown 864 * @param __USB__ Specifies USB peripheral 865 * @return None 866 */ 867 #define __LL_USB_DMPullDownDisable(__USB__) MODIFY_REG((__USB__)->UCFG0, 0x3UL<<USB_DM_PD_EN_Pos, 0x1UL<<USB_DM_PD_EN_Pos) 868 869 /** 870 * @brief Config DM PullUp Hardware 871 * @param __USB__ Specifies USB peripheral 872 * @return None 873 */ 874 #define __LL_USB_DMPullUpHardware(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_DM_PU_EN_Msk) 875 876 /** 877 * @brief Config DM PullUp Normal 878 * @param __USB__ Specifies USB peripheral 879 * @return None 880 */ 881 #define __LL_USB_DMPullUpNormal(__USB__) SET_BIT((__USB__)->UCFG0, USB_DM_PU_EN_Msk | USB_DM_PU_Msk) 882 883 /** 884 * @brief Disable DM PullUp 885 * @param __USB__ Specifies USB peripheral 886 * @return None 887 */ 888 #define __LL_USB_DMPullUpDisable(__USB__) MODIFY_REG((__USB__)->UCFG0, 0x3UL<<USB_DM_PU_EN_Pos, 0x1UL<<USB_DM_PU_EN_Pos) 889 890 /** 891 * @brief Config DP PullDown Hardware 892 * @param __USB__ Specifies USB peripheral 893 * @return None 894 */ 895 #define __LL_USB_DPPullDownHardware(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_DP_PD_EN_Msk) 896 897 /** 898 * @brief Config DP PullDown Normal 899 * @param __USB__ Specifies USB peripheral 900 * @return None 901 */ 902 #define __LL_USB_DPPullDownNormal(__USB__) SET_BIT((__USB__)->UCFG0, USB_DP_PD_EN_Msk | USB_DP_PD_Msk) 903 904 /** 905 * @brief Disable DP PullDown 906 * @param __USB__ Specifies USB peripheral 907 * @return None 908 */ 909 #define __LL_USB_DPPullDownDisable(__USB__) MODIFY_REG((__USB__)->UCFG0, 0x3UL<<USB_DP_PD_EN_Pos, 0x1UL<<USB_DP_PD_EN_Pos) 910 911 /** 912 * @brief Config DP PullUp Hardware 913 * @param __USB__ Specifies USB peripheral 914 * @return None 915 */ 916 #define __LL_USB_DPPullUpHardware(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_DP_PU_EN_Msk) 917 918 /** 919 * @brief Config DP PullUp Normal 920 * @param __USB__ Specifies USB peripheral 921 * @return None 922 */ 923 #define __LL_USB_DPPullUpNormal(__USB__) SET_BIT((__USB__)->UCFG0, USB_DP_PU_EN_Msk | USB_DP_PU_Msk) 924 925 /** 926 * @brief Disable DP PullUp 927 * @param __USB__ Specifies USB peripheral 928 * @return None 929 */ 930 #define __LL_USB_DPPullUpDisable(__USB__) MODIFY_REG((__USB__)->UCFG0, 0x3UL<<USB_DP_PU_EN_Pos, 0x1UL<<USB_DP_PU_EN_Pos) 931 932 /** 933 * @brief Set Vbus Above VBusValid Threshold 934 * @param __USB__ Specifies USB peripheral 935 * @return None 936 */ 937 #define __LL_USB_VbusValidThreshold_Set(__USB__) SET_BIT((__USB__)->UCFG0, USB_VBUS_VALID_THRES_Msk) 938 939 /** 940 * @brief Clear Vbus Above VBusValid Threshold 941 * @param __USB__ Specifies USB peripheral 942 * @return None 943 */ 944 #define __LL_USB_VbusValidThreshold_Clr(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_VBUS_VALID_THRES_Msk) 945 946 /** 947 * @brief Set Vbus Above Vbus A-device Session Threshold 948 * @param __USB__ Specifies USB peripheral 949 * @return None 950 */ 951 #define __LL_USB_VbusAboveAdevSessThres_Set(__USB__) SET_BIT((__USB__)->UCFG0, USB_VBUS_A_SESS_THRES_Msk) 952 953 /** 954 * @brief Clear Vbus Above Vbus A-device Session Threshold 955 * @param __USB__ Specifies USB peripheral 956 * @return None 957 */ 958 #define __LL_USB_VbusAboveAdevSessThres_Clr(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_VBUS_A_SESS_THRES_Msk) 959 960 /** 961 * @brief Set Vbus Above Session End Threshold 962 * @param __USB__ Specifies USB peripheral 963 * @return None 964 */ 965 #define __LL_USB_VbusAboveSessEndThres_Set(__USB__) SET_BIT((__USB__)->UCFG0, USB_VBUS_SESS_END_THRES_Msk) 966 967 /** 968 * @brief Clear Vbus Above Session End Threshold 969 * @param __USB__ Specifies USB peripheral 970 * @return None 971 */ 972 #define __LL_USB_VbusAboveSessEndThres_Clr(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_VBUS_SESS_END_THRES_Msk) 973 974 /** 975 * @brief Set Mini-AB Connector ID Pin 976 * @param __USB__ Specifies USB peripheral 977 * @return None 978 */ 979 #define __LL_USB_MiniABConnectorID_Set(__USB__) SET_BIT((__USB__)->UCFG0, USB_MINI_AB_CONN_ID_Msk) 980 981 /** 982 * @brief Clear Mini-AB Connector ID Pin 983 * @param __USB__ Specifies USB peripheral 984 * @return None 985 */ 986 #define __LL_USB_MiniABConnectorID_Clr(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_MINI_AB_CONN_ID_Msk) 987 988 /** 989 * @brief Enable USB PHY 990 * @param __USB__ Specifies USB peripheral 991 * @return None 992 */ 993 #define __LL_USB_PHY_En(__USB__) SET_BIT((__USB__)->UCFG0, USB_PHY_EN_Msk) 994 995 /** 996 * @brief Disable USB PHY 997 * @param __USB__ Specifies USB peripheral 998 * @return None 999 */ 1000 #define __LL_USB_PHY_Dis(__USB__) CLEAR_BIT((__USB__)->UCFG0, USB_PHY_EN_Msk) 1001 1002 1003 /** 1004 * @brief Enable Interrupt Send to CPU 1005 * @param __USB__ Specifies USB peripheral 1006 * @param int_bit_mask Interrupt BitMask to be Enable 1007 * @return None 1008 */ 1009 #define __LL_USB_INTSendToCPU_En(__USB__, int_bit_mask) SET_BIT((__USB__)->UCFG1, int_bit_mask) 1010 1011 /** 1012 * @brief Disable Interrupt Send to CPU 1013 * @param __USB__ Specifies USB peripheral 1014 * @param int_bit_mask Interrupt BitMask to be Disable 1015 * @return None 1016 */ 1017 #define __LL_USB_INTSendToCPU_Dis(__USB__, int_bit_mask) CLEAR_BIT((__USB__)->UCFG1, int_bit_mask) 1018 1019 1020 /** 1021 * @brief Get SendState 1022 * @param __USB__ Specifies USB peripheral 1023 * @retval 0 Reserved 1024 * @retval 1 Setup 1025 * @retval 2 Out 1026 * @retval 3 IN 1027 */ 1028 #define __LL_USB_SendState_Get(__USB__) (READ_BIT((__USB__)->UCFG2, USB_SEND_STATE_Msk) >> USB_SEND_STATE_Pos) 1029 1030 /** 1031 * @brief Judge Is IN Packet or not 1032 * @param __USB__ Specifies USB peripheral 1033 * @retval 0 Isn't IN Packet 1034 * @retval 1 Is IN Packet 1035 */ 1036 #define __LL_USB_IsInPacket(__USB__) (READ_BIT((__USB__)->UCFG2, USB_IN_STATE_Msk) >> USB_IN_STATE_Pos) 1037 1038 /** 1039 * @brief Judge Is OUT Packet or not 1040 * @param __USB__ Specifies USB peripheral 1041 * @retval 0 Isn't OUT Packet 1042 * @retval 1 Is OUT Packet 1043 */ 1044 #define __LL_USB_IsOutPacket(__USB__) (READ_BIT((__USB__)->UCFG2, USB_OUT_STATE_Msk) >> USB_OUT_STATE_Pos) 1045 1046 /** 1047 * @brief Judge Is Setup Packet or not 1048 * @param __USB__ Specifies USB peripheral 1049 * @retval 0 Isn't Setup Packet 1050 * @retval 1 Is Setup Packet 1051 */ 1052 #define __LL_USB_IsSetupPacket(__USB__) (READ_BIT((__USB__)->UCFG2, USB_SETUP_STATE_Msk) >> USB_SETUP_STATE_Pos) 1053 1054 /** 1055 * @brief Set Debounce Max 1056 * @param __USB__ Specifies USB peripheral 1057 * @param debouce debouce to be set 1058 * @return None 1059 */ 1060 #define __LL_USB_DebouceMax_Set(__USB__, debouce) \ 1061 MODIFY_REG((__USB__)->UCFG2, USB_DEBOUCE_MAX_Msk, ((debouce & 0x3FFFUL) << USB_DEBOUCE_MAX_Pos)) 1062 1063 /** 1064 * @brief Enable Disconnect Interrupt 1065 * @param __USB__ Specifies USB peripheral 1066 * @return None 1067 */ 1068 #define __LL_USB_Disconn_Int_En(__USB__) SET_BIT((__USB__)->UCFG2, USB_DISCONN_INT_EN_Msk) 1069 1070 /** 1071 * @brief Disable Disconnect Interrupt 1072 * @param __USB__ Specifies USB peripheral 1073 * @return None 1074 */ 1075 #define __LL_USB_Disconn_Int_Dis(__USB__) CLEAR_BIT((__USB__)->UCFG2, USB_DISCONN_INT_EN_Msk) 1076 1077 /** 1078 * @brief Judge Is Disconnect Interrupt or not 1079 * @param __USB__ Specifies USB peripheral 1080 * @retval 0 Isn't Disconnect Interrupt 1081 * @retval 1 Is Disconnect Interrupt 1082 */ 1083 #define __LL_USB_IsDisconn(__USB__) (READ_BIT((__USB__)->UCFG2, USB_DISCONN_INT_STA_Msk) >> USB_DISCONN_INT_STA_Pos) 1084 1085 /** 1086 * @brief Clear Disconnect Interrupt Pending 1087 * @param __USB__ Specifies USB peripheral 1088 * @return None 1089 */ 1090 #define __LL_USB_Disconn_Clr(__USB__) SET_BIT((__USB__)->UCFG2, USB_DISCONN_INT_STA_Msk) 1091 1092 /** 1093 * @brief Enable Connect Interrupt 1094 * @param __USB__ Specifies USB peripheral 1095 * @return None 1096 */ 1097 #define __LL_USB_Conn_Int_En(__USB__) SET_BIT((__USB__)->UCFG2, USB_CONN_INT_EN_Msk) 1098 1099 /** 1100 * @brief Disable Connect Interrupt 1101 * @param __USB__ Specifies USB peripheral 1102 * @return None 1103 */ 1104 #define __LL_USB_Conn_Int_Dis(__USB__) CLEAR_BIT((__USB__)->UCFG2, USB_CONN_INT_EN_Msk) 1105 1106 /** 1107 * @brief Judge Is Connect Interrupt or not 1108 * @param __USB__ Specifies USB peripheral 1109 * @retval 0 Isn't Connect Interrupt 1110 * @retval 1 Is Connect Interrupt 1111 */ 1112 #define __LL_USB_IsConn(__USB__) (READ_BIT((__USB__)->UCFG2, USB_CONN_INT_STA_Msk) >> USB_CONN_INT_STA_Pos) 1113 1114 /** 1115 * @brief Clear Connect Interrupt Pending 1116 * @param __USB__ Specifies USB peripheral 1117 * @return None 1118 */ 1119 #define __LL_USB_Conn_Clr(__USB__) SET_BIT((__USB__)->UCFG2, USB_CONN_INT_STA_Msk) 1120 1121 /** 1122 * @} 1123 */ 1124 1125 1126 /* Exported types ------------------------------------------------------------*/ 1127 /** @defgroup USB_LL_Exported_Types USB LL Exported Types 1128 * @brief USB LL Exported Types 1129 * @{ 1130 */ 1131 1132 /** 1133 * @brief USB Endpoint Number 1134 */ 1135 typedef enum { 1136 EP_NUM_0 = 0, /*!< Endpoint Number 0 */ 1137 EP_NUM_1 = 1, /*!< Endpoint Number 1 */ 1138 EP_NUM_2 = 2, /*!< Endpoint Number 2 */ 1139 EP_NUMS = 3, /*!< Endpoint Numbers */ 1140 } USB_EpNumETypeDef; 1141 1142 /** 1143 * @} 1144 */ 1145 1146 1147 /* Exported functions --------------------------------------------------------*/ 1148 /** @addtogroup USB_LL_Exported_Functions 1149 * @{ 1150 */ 1151 1152 /** @addtogroup USB_LL_Exported_Functions_Group1 1153 * @{ 1154 */ 1155 LL_StatusETypeDef LL_USB_Init(USB_TypeDef *Instance); 1156 LL_StatusETypeDef LL_USB_DeInit(USB_TypeDef *Instance); 1157 void LL_USB_MspInit(USB_TypeDef *Instance); 1158 void LL_USB_MspDeInit(USB_TypeDef *Instance); 1159 /** 1160 * @} 1161 */ 1162 1163 1164 /** @addtogroup USB_LL_Exported_Functions_Group2 1165 * @{ 1166 */ 1167 void LL_USB_CtrlIRQHandler(USB_TypeDef *Instance); 1168 void LL_USB_CtrlSuspendCallback(USB_TypeDef *Instance); 1169 void LL_USB_CtrlResumeCallback(USB_TypeDef *Instance); 1170 void LL_USB_CtrlResetCallback(USB_TypeDef *Instance); 1171 void LL_USB_CtrlSofCallback(USB_TypeDef *Instance); 1172 void LL_USB_CtrlSessEndCallback(USB_TypeDef *Instance); 1173 /** 1174 * @} 1175 */ 1176 1177 1178 /** @addtogroup USB_LL_Exported_Functions_Group3 1179 * @{ 1180 */ 1181 void LL_USB_DetIRQHandler(USB_TypeDef *Instance); 1182 void LL_USB_DetConnectCallback(USB_TypeDef *Instance); 1183 void LL_USB_DetDisonnectCallback(USB_TypeDef *Instance); 1184 /** 1185 * @} 1186 */ 1187 1188 1189 /** @addtogroup USB_LL_Exported_Functions_Group4 1190 * @{ 1191 */ 1192 void LL_USB_EpIRQHandler(USB_TypeDef *Instance); 1193 void LL_USB_Ep0SetupCallback(USB_TypeDef *Instance); 1194 void LL_USB_Ep0InCallback(USB_TypeDef *Instance); 1195 void LL_USB_Ep0OutCallback(USB_TypeDef *Instance); 1196 void LL_USB_Ep1InCallback(USB_TypeDef *Instance); 1197 void LL_USB_Ep1OutCallback(USB_TypeDef *Instance); 1198 void LL_USB_Ep2InCallback(USB_TypeDef *Instance); 1199 void LL_USB_Ep2OutCallback(USB_TypeDef *Instance); 1200 /** 1201 * @} 1202 */ 1203 1204 /** 1205 * @} 1206 */ 1207 1208 1209 /* Private types -------------------------------------------------------------*/ 1210 /* Private variables ---------------------------------------------------------*/ 1211 /* Private constants ---------------------------------------------------------*/ 1212 /* Private macros ------------------------------------------------------------*/ 1213 /* Private functions ---------------------------------------------------------*/ 1214 1215 1216 /** 1217 * @} 1218 */ 1219 1220 /** 1221 * @} 1222 */ 1223 1224 1225 #ifdef __cplusplus 1226 } 1227 #endif /* __cplusplus */ 1228 1229 1230 #endif /* _TAE32F53XX_LL_USB_H_ */ 1231 1232 1233 /************************* (C) COPYRIGHT Tai-Action *****END OF FILE***********/ 1234 1235