📄 usb_drv.h
字号:
#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)
//! @}
//! @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)
//! @}
//! @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<<TXIN))
//! 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)
//! @}
//! @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
//! enables SOF generation
#define Host_enable_sof() (UHCON |= (1<<SOFEN))
//! disables SOF generation
#define Host_disable_sof() (UHCON &= ~(1<<SOFEN))
//! sends a USB Reset to the device
#define Host_send_reset() (UHCON |= (1<<RESET))
//! tests if USB Reset running
#define Host_is_reset() ((UHCON & (1<<RESET)) ? TRUE : FALSE)
//! sends a USB Resume to the device
#define Host_send_resume() (UHCON |= (1<<RESUME))
//! tests if USB Resume running
#define Host_is_resume() ((UHCON & (1<<RESUME)) ? TRUE : FALSE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -