📄 usb_drv.h
字号:
#define Usb_disable_hnp_error_interrupt() (OTGIEN &= ~(1<<HNPERRE))#define Is_hnp_error_interrupt_enabled() ((OTGIEN & (1<<HNPERRE)) ? TRUE : FALSE) //! acks HNP error interrupt#define Usb_ack_hnp_error_interrupt() (OTGINT &= ~(1<<HNPERRI)) //! tests if a HNP error occurs#define Is_usb_hnp_error_interrupt() ((OTGINT & (1<<HNPERRI)) ? TRUE : FALSE) //! enables role exchange interrupt#define Usb_enable_role_exchange_interrupt() (OTGIEN |= (1<<ROLEEXE)) //! disables role exchange interrupt#define Usb_disable_role_exchange_interrupt() (OTGIEN &= ~(1<<ROLEEXE))#define Is_role_exchange_interrupt_enabled() ((OTGIEN & (1<<ROLEEXE)) ? TRUE : FALSE) //! acks role exchange interrupt#define Usb_ack_role_exchange_interrupt() (OTGINT &= ~(1<<ROLEEXI)) //! tests if a role exchange occurs#define Is_usb_role_exchange_interrupt() ((OTGINT & (1<<ROLEEXI)) ? TRUE : FALSE) //! enables B device connection error interrupt#define Usb_enable_bconnection_error_interrupt() (OTGIEN |= (1<<BCERRE)) //! disables B device connection error interrupt#define Usb_disable_bconnection_error_interrupt() (OTGIEN &= ~(1<<BCERRE))#define Is_bconnection_error_interrupt_enabled() ((OTGIEN & (1<<BCERRE)) ? TRUE : FALSE) //! acks B device connection error interrupt#define Usb_ack_bconnection_error_interrupt() (OTGINT &= ~(1<<BCERRI)) //! tests if a B device connection error occurs#define Is_usb_bconnection_error_interrupt() ((OTGINT & (1<<BCERRI)) ? TRUE : FALSE) //! enables VBus error interrupt#define Usb_enable_vbus_error_interrupt() (OTGIEN |= (1<<VBERRE)) //! disables VBus error interrupt#define Usb_disable_vbus_error_interrupt() (OTGIEN &= ~(1<<VBERRE))#define Is_vbus_error_interrupt_enabled() ((OTGIEN & (1<<VBERRE)) ? TRUE : FALSE) //! acks VBus error interrupt#define Usb_ack_vbus_error_interrupt() (OTGINT &= ~(1<<VBERRI)) //! tests if a VBus error occurs#define Is_usb_vbus_error_interrupt() ((OTGINT & (1<<VBERRI)) ? TRUE : FALSE) //! enables SRP interrupt#define Usb_enable_srp_interrupt() (OTGIEN |= (1<<SRPE)) //! disables SRP interrupt#define Usb_disable_srp_interrupt() (OTGIEN &= ~(1<<SRPE))#define Is_srp_interrupt_enabled() ((OTGIEN & (1<<SRPE)) ? TRUE : FALSE) //! acks SRP interrupt#define Usb_ack_srp_interrupt() (OTGINT &= ~(1<<SRPI)) //! tests if a SRP occurs#define Is_usb_srp_interrupt() ((OTGINT & (1<<SRPI)) ? TRUE : FALSE)//! @}//! @ingroup usbdriver//! @defgroup USB_device_driver USB device controller drivers//! These macros manage the USB Device controller.//! @{ //! initiates a remote wake-up #define Usb_initiate_remote_wake_up() (UDCON |= (1<<RMWKUP)) //! detaches from USB bus #define Usb_detach() (UDCON |= (1<<DETACH)) //! attaches to USB bus #define Usb_attach() (UDCON &= ~(1<<DETACH)) //! test if remote wake-up still running #define Is_usb_pending_remote_wake_up() ((UDCON & (1<<RMWKUP)) ? TRUE : FALSE) //! test if the device is detached #define Is_usb_detached() ((UDCON & (1<<DETACH)) ? TRUE : FALSE) //! returns the USB device interrupts (interrupt enabled) #define Usb_get_device_interrupt() (UDINT & (1<<UDIEN)) //! acks the USB device interrupts (interrupt enabled) #define Usb_ack_all_device_interrupt() (UDINT = ~(1<<UDIEN)) //! enables remote wake-up interrupt #define Usb_enable_remote_wake_up_interrupt() (UDIEN |= (1<<UPRSME)) //! disables remote wake-up interrupt #define Usb_disable_remote_wake_up_interrupt() (UDIEN &= ~(1<<UPRSME))#define Is_remote_wake_up_interrupt_enabled() ((UDIEN & (1<<UPRSME)) ? TRUE : FALSE) //! acks remote wake-up#define Usb_ack_remote_wake_up_start() (UDINT = ~(1<<UPRSMI)) //! tests if remote wake-up still running#define Is_usb_remote_wake_up_start() ((UDINT & (1<<UPRSMI)) ? TRUE : FALSE) //! enables resume interrupt#define Usb_enable_resume_interrupt() (UDIEN |= (1<<EORSME)) //! disables resume interrupt#define Usb_disable_resume_interrupt() (UDIEN &= ~(1<<EORSME))#define Is_resume_interrupt_enabled() ((UDIEN & (1<<EORSME)) ? TRUE : FALSE) //! acks resume#define Usb_ack_resume() (UDINT = ~(1<<EORSMI)) //! tests if resume occurs#define Is_usb_resume() ((UDINT & (1<<EORSMI)) ? TRUE : FALSE) //! enables wake-up interrupt#define Usb_enable_wake_up_interrupt() (UDIEN |= (1<<WAKEUPE)) //! disables wake-up interrupt#define Usb_disable_wake_up_interrupt() (UDIEN &= ~(1<<WAKEUPE))#define Is_swake_up_interrupt_enabled() ((UDIEN & (1<<WAKEUPE)) ? TRUE : FALSE) //! acks wake-up#define Usb_ack_wake_up() (UDINT = ~(1<<WAKEUPI)) //! tests if wake-up occurs#define Is_usb_wake_up() ((UDINT & (1<<WAKEUPI)) ? TRUE : FALSE) //! enables USB reset interrupt#define Usb_enable_reset_interrupt() (UDIEN |= (1<<EORSTE)) //! disables USB reset interrupt#define Usb_disable_reset_interrupt() (UDIEN &= ~(1<<EORSTE))#define Is_reset_interrupt_enabled() ((UDIEN & (1<<EORSTE)) ? TRUE : FALSE) //! acks USB reset#define Usb_ack_reset() (UDINT = ~(1<<EORSTI)) //! tests if USB reset occurs#define Is_usb_reset() ((UDINT & (1<<EORSTI)) ? TRUE : FALSE) //! enables Start Of Frame Interrupt#define Usb_enable_sof_interrupt() (UDIEN |= (1<<SOFE)) //! disables Start Of Frame Interrupt#define Usb_disable_sof_interrupt() (UDIEN &= ~(1<<SOFE))#define Is_sof_interrupt_enabled() ((UDIEN & (1<<SOFE)) ? TRUE : FALSE) //! acks Start Of Frame#define Usb_ack_sof() (UDINT = ~(1<<SOFI)) //! tests if Start Of Frame occurs#define Is_usb_sof() ((UDINT & (1<<SOFI)) ? TRUE : FALSE) //! enables suspend state interrupt#define Usb_enable_suspend_interrupt() (UDIEN |= (1<<SUSPE)) //! disables suspend state interrupt#define Usb_disable_suspend_interrupt() (UDIEN &= ~(1<<SUSPE))#define Is_suspend_interrupt_enabled() ((UDIEN & (1<<SUSPE)) ? TRUE : FALSE) //! acks Suspend#define Usb_ack_suspend() (UDINT = ~(1<<SUSPI)) //! tests if Suspend state detected#define Is_usb_suspend() ((UDINT & (1<<SUSPI)) ? TRUE : FALSE) //! enables USB device address#define Usb_enable_address() (UDADDR |= (1<<ADDEN)) //! disables USB device address#define Usb_disable_address() (UDADDR &= ~(1<<ADDEN)) //! sets the USB device address#define Usb_configure_address(addr) (UDADDR = (UDADDR & (1<<ADDEN)) | ((U8)addr & MSK_UADD)) //! returns the last frame number#define Usb_frame_number() ((U16)((((U16)UDFNUMH) << 8) | ((U16)UDFNUML))) //! tests if a crc error occurs in frame number#define Is_usb_frame_number_crc_error() ((UDMFN & (1<<FNCERR)) ? TRUE : FALSE)//! @}//! @ingroup usbdriver//! @defgroup usb_gen_ep USB endpoint drivers//! These macros manage the common features of the endpoints.//! @{ //! selects the endpoint number to interface with the CPU#define Usb_select_endpoint(ep) (UENUM = (U8)ep ) //! get the currently selected endpoint number#define Usb_get_selected_endpoint() (UENUM ) //! resets the selected endpoint#define Usb_reset_endpoint(ep) (UERST = 1 << (U8)ep, UERST = 0) //! enables the current endpoint#define Usb_enable_endpoint() (UECONX |= (1<<EPEN)) //! enables the STALL handshake for the next transaction#define Usb_enable_stall_handshake() (UECONX |= (1<<STALLRQ)) //! resets the data toggle sequence#define Usb_reset_data_toggle() (UECONX |= (1<<RSTDT)) //! disables the current endpoint#define Usb_disable_endpoint() (UECONX &= ~(1<<EPEN)) //! disables the STALL handshake#define Usb_disable_stall_handshake() (UECONX |= (1<<STALLRQC)) //! selects endpoint interface on CPU#define Usb_select_epnum_for_cpu() (UECONX &= ~(1<<EPNUMS)) //! tests if the current endpoint is enabled#define Is_usb_endpoint_enabled() ((UECONX & (1<<EPEN)) ? TRUE : FALSE) //! tests if STALL handshake request is running#define Is_usb_endpoint_stall_requested() ((UECONX & (1<<STALLRQ)) ? TRUE : FALSE) //! configures the current endpoint#define Usb_configure_endpoint_type(type) (UECFG0X = (UECFG0X & ~(MSK_EPTYPE)) | ((U8)type << 6)) //! configures the current endpoint direction#define Usb_configure_endpoint_direction(dir) (UECFG0X = (UECFG0X & ~(1<<EPDIR)) | ((U8)dir)) //! configures the current endpoint size#define Usb_configure_endpoint_size(size) (UECFG1X = (UECFG1X & ~MSK_EPSIZE) | ((U8)size << 4)) //! configures the current endpoint number of banks#define Usb_configure_endpoint_bank(bank) (UECFG1X = (UECFG1X & ~MSK_EPBK) | ((U8)bank << 2)) //! allocates the current configuration in DPRAM memory#define Usb_allocate_memory() (UECFG1X |= (1<<ALLOC)) //! un-allocates the current configuration in DPRAM memory#define Usb_unallocate_memory() (UECFG1X &= ~(1<<ALLOC)) //! acks endpoint overflow interrupt#define Usb_ack_overflow_interrupt() (UESTA0X &= ~(1<<OVERFI)) //! acks endpoint underflow memory#define Usb_ack_underflow_interrupt() (UESTA0X &= ~(1<<UNDERFI)) //! acks Zero Length Packet received#define Usb_ack_zlp() (UESTA0X &= ~(1<<ZLPSEEN)) //! returns data toggle#define Usb_data_toggle() ((UESTA0X&MSK_DTSEQ) >> 2) //! returns the number of busy banks#define Usb_nb_busy_bank() (UESTA0X & MSK_NBUSYBK) //! tests if at least one bank is busy#define Is_usb_one_bank_busy() ((UESTA0X & MSK_NBUSYBK) == 0 ? FALSE : TRUE) //! tests if current endpoint is configured#define Is_endpoint_configured() ((UESTA0X & (1<<CFGOK)) ? TRUE : FALSE) //! tests if an overflows occurs#define Is_usb_overflow() ((UESTA0X & (1<<OVERFI)) ? TRUE : FALSE) //! tests if an underflow occurs#define Is_usb_underflow() ((UESTA0X & (1<<UNDERFI)) ? TRUE : FALSE) //! tests if a ZLP has been detected#define Is_usb_zlp() ((UESTA0X & (1<<ZLPSEEN)) ? TRUE : FALSE) //! returns the control direction#define Usb_control_direction() ((UESTA1X & (1<<CTRLDIR)) >> 2) //! returns the number of the current bank#define Usb_current_bank() ( UESTA1X & MSK_CURRBK) //! clears FIFOCON bit#define Usb_ack_fifocon() (UEINTX &= ~(1<<FIFOCON)) //! acks NAK IN received#define Usb_ack_nak_in() (UEINTX &= ~(1<<NAKINI)) //! acks NAK OUT received#define Usb_ack_nak_out() (UEINTX &= ~(1<<NAKOUTI)) //! acks receive SETUP#define Usb_ack_receive_setup() (UEINTX &= ~(1<<RXSTPI)) //! acks reveive OUT#define Usb_ack_receive_out() (UEINTX &= ~(1<<RXOUTI), Usb_ack_fifocon()) //! acks STALL sent#define Usb_ack_stalled() (MSK_STALLEDI= 0) //! acks IN ready#define Usb_ack_in_ready() (UEINTX &= ~(1<<TXINI), Usb_ack_fifocon()) //! Kills last bank#define Usb_kill_last_in_bank() (UENTTX |= (1<<RXOUTI)) //! tests if endpoint read allowed#define Is_usb_read_enabled() (UEINTX&(1<<RWAL)) //! tests if endpoint write allowed#define Is_usb_write_enabled() (UEINTX&(1<<RWAL)) //! tests if read allowed on control endpoint#define Is_usb_read_control_enabled() (UEINTX&(1<<TXINI)) //! tests if SETUP received#define Is_usb_receive_setup() (UEINTX&(1<<RXSTPI)) //! tests if OUT received#define Is_usb_receive_out() (UEINTX&(1<<RXOUTI)) //! tests if IN ready#define Is_usb_in_ready() (UEINTX&(1<<TXINI)) //! sends IN#define Usb_send_in() (UEINTX &= ~(1<<FIFOCON)) //! sends IN on control endpoint#define Usb_send_control_in() (UEINTX &= ~(1<<TXINI)) //! frees OUT bank#define Usb_free_out_bank() (UEINTX &= ~(1<<FIFOCON)) //! acks OUT on control endpoint#define Usb_ack_control_out() (UEINTX &= ~(1<<RXOUTI)) //! enables flow error interrupt#define Usb_enable_flow_error_interrupt() (UEIENX |= (1<<FLERRE)) //! enables NAK IN interrupt#define Usb_enable_nak_in_interrupt() (UEIENX |= (1<<NAKINE)) //! enables NAK OUT interrupt#define Usb_enable_nak_out_interrupt() (UEIENX |= (1<<NAKOUTE)) //! enables receive SETUP interrupt#define Usb_enable_receive_setup_interrupt() (UEIENX |= (1<<RXSTPE)) //! enables receive OUT interrupt#define Usb_enable_receive_out_interrupt() (UEIENX |= (1<<RXOUTE)) //! enables STALL sent interrupt#define Usb_enable_stalled_interrupt() (UEIENX |= (1<<STALLEDE)) //! enables IN ready interrupt#define Usb_enable_in_ready_interrupt() (UEIENX |= (1<<TXINE)) //! disables flow error interrupt#define Usb_disable_flow_error_interrupt() (UEIENX &= ~(1<<FLERRE)) //! disables NAK IN interrupt#define Usb_disable_nak_in_interrupt() (UEIENX &= ~(1<<NAKINE)) //! disables NAK OUT interrupt#define Usb_disable_nak_out_interrupt() (UEIENX &= ~(1<<NAKOUTE)) //! disables receive SETUP interrupt#define Usb_disable_receive_setup_interrupt() (UEIENX &= ~(1<<RXSTPE)) //! disables receive OUT interrupt#define Usb_disable_receive_out_interrupt() (UEIENX &= ~(1<<RXOUTE)) //! disables STALL sent interrupt#define Usb_disable_stalled_interrupt() (UEIENX &= ~(1<<STALLEDE)) //! disables IN ready interrupt#define Usb_disable_in_ready_interrupt() (UEIENX &= ~(1<<TXIN)) //! returns FIFO byte for current endpoint#define Usb_read_byte() (UEDATX) //! writes byte in FIFO for current endpoint#define Usb_write_byte(byte) (UEDATX = (U8)byte) //! returns number of bytes in FIFO current endpoint (16 bits)#define Usb_byte_counter() ((((U16)UEBCHX) << 8) | (UEBCLX)) //! returns number of bytes in FIFO current endpoint (8 bits)#define Usb_byte_counter_8() ((U8)UEBCLX) //! tests the general endpoint interrupt flags#define Usb_interrupt_flags() (UEINT) //! tests the general endpoint interrupt flags#define Is_usb_endpoint_event() (Usb_interrupt_flags() != 0x00)//! @}//! @ingroup usbdriver//! @defgroup host_management USB host controller drivers//! These macros manage the USB Host controller.//! @{ //! allocates the current configuration in DPRAM memory #define Host_allocate_memory() (UPCFG1X |= (1<<ALLOC)) //! un-allocates the current configuration in DPRAM memory #define Host_unallocate_memory() (UPCFG1X &= ~(1<<ALLOC)) //! enables USB Host function #define Host_enable() (USBCON |= (1<<HOST)) #ifndef SOFEN #define SOFEN 0 //For AVRGCC, SOFEN bit missing in default sfr file #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -