rtic/dev/api/rp2040_pac/usbctrl_regs/index.html
2024-12-06 13:35:18 +00:00

2 lines
No EOL
19 KiB
HTML

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="USB FS/LS controller device registers"><title>rp2040_pac::usbctrl_regs - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-b0742ba02757f159.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="rp2040_pac" data-themes="" data-resource-suffix="" data-rustdoc-version="1.83.0 (90b35a623 2024-11-26)" data-channel="1.83.0" data-search-js="search-f0d225181b97f9a4.js" data-settings-js="settings-805db61a62df4bd2.js" ><script src="../../static.files/storage-1d39b6787ed640ff.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-f070b9041d14864c.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-0111fcff984fae8f.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../rp2040_pac/index.html">rp2040_<wbr>pac</a><span class="version">0.6.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module usbctrl_<wbr>regs</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#types" title="Type Aliases">Type Aliases</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate rp2040_<wbr>pac</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="../index.html">rp2040_pac</a></span><h1>Module <span>usbctrl_regs</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/rp2040_pac/usbctrl_regs.rs.html#1-448">source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>USB FS/LS controller device registers</p>
</div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="addr_endp/index.html" title="mod rp2040_pac::usbctrl_regs::addr_endp">addr_<wbr>endp</a></div><div class="desc docblock-short">Device address and endpoint control</div></li><li><div class="item-name"><a class="mod" href="buff_cpu_should_handle/index.html" title="mod rp2040_pac::usbctrl_regs::buff_cpu_should_handle">buff_<wbr>cpu_<wbr>should_<wbr>handle</a></div><div class="desc docblock-short">Which of the double buffers should be handled. Only valid if using an interrupt per buffer (i.e. not per 2 buffers). Not valid for host interrupt endpoint polling because they are only single buffered.</div></li><li><div class="item-name"><a class="mod" href="buff_status/index.html" title="mod rp2040_pac::usbctrl_regs::buff_status">buff_<wbr>status</a></div><div class="desc docblock-short">Buffer status register. A bit set here indicates that a buffer has completed on the endpoint (if the buffer interrupt is enabled). It is possible for 2 buffers to be completed, so clearing the buffer status bit may instantly re set it on the next clock cycle.</div></li><li><div class="item-name"><a class="mod" href="ep_abort/index.html" title="mod rp2040_pac::usbctrl_regs::ep_abort">ep_<wbr>abort</a></div><div class="desc docblock-short">Device only: Can be set to ignore the buffer control register for this endpoint in case you would like to revoke a buffer. A NAK will be sent for every access to the endpoint until this bit is cleared. A corresponding bit in <code>EP_ABORT_DONE</code> is set when it is safe to modify the buffer control register.</div></li><li><div class="item-name"><a class="mod" href="ep_abort_done/index.html" title="mod rp2040_pac::usbctrl_regs::ep_abort_done">ep_<wbr>abort_<wbr>done</a></div><div class="desc docblock-short">Device only: Used in conjunction with <code>EP_ABORT</code>. Set once an endpoint is idle so the programmer knows it is safe to modify the buffer control register.</div></li><li><div class="item-name"><a class="mod" href="ep_stall_arm/index.html" title="mod rp2040_pac::usbctrl_regs::ep_stall_arm">ep_<wbr>stall_<wbr>arm</a></div><div class="desc docblock-short">Device: this bit must be set in conjunction with the <code>STALL</code> bit in the buffer control register to send a STALL on EP0. The device controller clears these bits when a SETUP packet is received because the USB spec requires that a STALL condition is cleared when a SETUP packet is received.</div></li><li><div class="item-name"><a class="mod" href="ep_status_stall_nak/index.html" title="mod rp2040_pac::usbctrl_regs::ep_status_stall_nak">ep_<wbr>status_<wbr>stall_<wbr>nak</a></div><div class="desc docblock-short">Device: bits are set when the <code>IRQ_ON_NAK</code> or <code>IRQ_ON_STALL</code> bits are set. For EP0 this comes from <code>SIE_CTRL</code>. For all other endpoints it comes from the endpoint control register.</div></li><li><div class="item-name"><a class="mod" href="host_addr_endp/index.html" title="mod rp2040_pac::usbctrl_regs::host_addr_endp">host_<wbr>addr_<wbr>endp</a></div><div class="desc docblock-short">Interrupt endpoints. Only valid in HOST mode.</div></li><li><div class="item-name"><a class="mod" href="int_ep_ctrl/index.html" title="mod rp2040_pac::usbctrl_regs::int_ep_ctrl">int_<wbr>ep_<wbr>ctrl</a></div><div class="desc docblock-short">interrupt endpoint control register</div></li><li><div class="item-name"><a class="mod" href="inte/index.html" title="mod rp2040_pac::usbctrl_regs::inte">inte</a></div><div class="desc docblock-short">Interrupt Enable</div></li><li><div class="item-name"><a class="mod" href="intf/index.html" title="mod rp2040_pac::usbctrl_regs::intf">intf</a></div><div class="desc docblock-short">Interrupt Force</div></li><li><div class="item-name"><a class="mod" href="intr/index.html" title="mod rp2040_pac::usbctrl_regs::intr">intr</a></div><div class="desc docblock-short">Raw Interrupts</div></li><li><div class="item-name"><a class="mod" href="ints/index.html" title="mod rp2040_pac::usbctrl_regs::ints">ints</a></div><div class="desc docblock-short">Interrupt status after masking &amp; forcing</div></li><li><div class="item-name"><a class="mod" href="main_ctrl/index.html" title="mod rp2040_pac::usbctrl_regs::main_ctrl">main_<wbr>ctrl</a></div><div class="desc docblock-short">Main control register</div></li><li><div class="item-name"><a class="mod" href="nak_poll/index.html" title="mod rp2040_pac::usbctrl_regs::nak_poll">nak_<wbr>poll</a></div><div class="desc docblock-short">Used by the host controller. Sets the wait time in microseconds before trying again if the device replies with a NAK.</div></li><li><div class="item-name"><a class="mod" href="sie_ctrl/index.html" title="mod rp2040_pac::usbctrl_regs::sie_ctrl">sie_<wbr>ctrl</a></div><div class="desc docblock-short">SIE control register</div></li><li><div class="item-name"><a class="mod" href="sie_status/index.html" title="mod rp2040_pac::usbctrl_regs::sie_status">sie_<wbr>status</a></div><div class="desc docblock-short">SIE status register</div></li><li><div class="item-name"><a class="mod" href="sof_rd/index.html" title="mod rp2040_pac::usbctrl_regs::sof_rd">sof_rd</a></div><div class="desc docblock-short">Read the last SOF (Start of Frame) frame number seen. In device mode the last SOF received from the host. In host mode the last SOF sent by the host.</div></li><li><div class="item-name"><a class="mod" href="sof_wr/index.html" title="mod rp2040_pac::usbctrl_regs::sof_wr">sof_wr</a></div><div class="desc docblock-short">Set the SOF (Start of Frame) frame number in the host controller. The SOF packet is sent every 1ms and the host will increment the frame number by 1 each time.</div></li><li><div class="item-name"><a class="mod" href="usb_muxing/index.html" title="mod rp2040_pac::usbctrl_regs::usb_muxing">usb_<wbr>muxing</a></div><div class="desc docblock-short">Where to connect the USB controller. Should be to_phy by default.</div></li><li><div class="item-name"><a class="mod" href="usb_pwr/index.html" title="mod rp2040_pac::usbctrl_regs::usb_pwr">usb_pwr</a></div><div class="desc docblock-short">Overrides for the power signals in the event that the VBUS signals are not hooked up to GPIO. Set the value of the override and then the override enable to switch over to the override value.</div></li><li><div class="item-name"><a class="mod" href="usbphy_direct/index.html" title="mod rp2040_pac::usbctrl_regs::usbphy_direct">usbphy_<wbr>direct</a></div><div class="desc docblock-short">This register allows for direct control of the USB phy. Use in conjunction with usbphy_direct_override register to enable each override bit.</div></li><li><div class="item-name"><a class="mod" href="usbphy_direct_override/index.html" title="mod rp2040_pac::usbctrl_regs::usbphy_direct_override">usbphy_<wbr>direct_<wbr>override</a></div><div class="desc docblock-short">Override enable for each control in usbphy_direct</div></li><li><div class="item-name"><a class="mod" href="usbphy_trim/index.html" title="mod rp2040_pac::usbctrl_regs::usbphy_trim">usbphy_<wbr>trim</a></div><div class="desc docblock-short">Used to adjust trim values of USB phy pull down resistors.</div></li></ul><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.RegisterBlock.html" title="struct rp2040_pac::usbctrl_regs::RegisterBlock">Register<wbr>Block</a></div><div class="desc docblock-short">Register block</div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.ADDR_ENDP.html" title="type rp2040_pac::usbctrl_regs::ADDR_ENDP">ADDR_<wbr>ENDP</a></div><div class="desc docblock-short">ADDR_ENDP (rw) register accessor: Device address and endpoint control</div></li><li><div class="item-name"><a class="type" href="type.BUFF_CPU_SHOULD_HANDLE.html" title="type rp2040_pac::usbctrl_regs::BUFF_CPU_SHOULD_HANDLE">BUFF_<wbr>CPU_<wbr>SHOULD_<wbr>HANDLE</a></div><div class="desc docblock-short">BUFF_CPU_SHOULD_HANDLE (r) register accessor: Which of the double buffers should be handled. Only valid if using an interrupt per buffer (i.e. not per 2 buffers). Not valid for host interrupt endpoint polling because they are only single buffered.</div></li><li><div class="item-name"><a class="type" href="type.BUFF_STATUS.html" title="type rp2040_pac::usbctrl_regs::BUFF_STATUS">BUFF_<wbr>STATUS</a></div><div class="desc docblock-short">BUFF_STATUS (rw) register accessor: Buffer status register. A bit set here indicates that a buffer has completed on the endpoint (if the buffer interrupt is enabled). It is possible for 2 buffers to be completed, so clearing the buffer status bit may instantly re set it on the next clock cycle.</div></li><li><div class="item-name"><a class="type" href="type.EP_ABORT.html" title="type rp2040_pac::usbctrl_regs::EP_ABORT">EP_<wbr>ABORT</a></div><div class="desc docblock-short">EP_ABORT (rw) register accessor: Device only: Can be set to ignore the buffer control register for this endpoint in case you would like to revoke a buffer. A NAK will be sent for every access to the endpoint until this bit is cleared. A corresponding bit in <code>EP_ABORT_DONE</code> is set when it is safe to modify the buffer control register.</div></li><li><div class="item-name"><a class="type" href="type.EP_ABORT_DONE.html" title="type rp2040_pac::usbctrl_regs::EP_ABORT_DONE">EP_<wbr>ABORT_<wbr>DONE</a></div><div class="desc docblock-short">EP_ABORT_DONE (rw) register accessor: Device only: Used in conjunction with <code>EP_ABORT</code>. Set once an endpoint is idle so the programmer knows it is safe to modify the buffer control register.</div></li><li><div class="item-name"><a class="type" href="type.EP_STALL_ARM.html" title="type rp2040_pac::usbctrl_regs::EP_STALL_ARM">EP_<wbr>STALL_<wbr>ARM</a></div><div class="desc docblock-short">EP_STALL_ARM (rw) register accessor: Device: this bit must be set in conjunction with the <code>STALL</code> bit in the buffer control register to send a STALL on EP0. The device controller clears these bits when a SETUP packet is received because the USB spec requires that a STALL condition is cleared when a SETUP packet is received.</div></li><li><div class="item-name"><a class="type" href="type.EP_STATUS_STALL_NAK.html" title="type rp2040_pac::usbctrl_regs::EP_STATUS_STALL_NAK">EP_<wbr>STATUS_<wbr>STALL_<wbr>NAK</a></div><div class="desc docblock-short">EP_STATUS_STALL_NAK (rw) register accessor: Device: bits are set when the <code>IRQ_ON_NAK</code> or <code>IRQ_ON_STALL</code> bits are set. For EP0 this comes from <code>SIE_CTRL</code>. For all other endpoints it comes from the endpoint control register.</div></li><li><div class="item-name"><a class="type" href="type.HOST_ADDR_ENDP.html" title="type rp2040_pac::usbctrl_regs::HOST_ADDR_ENDP">HOST_<wbr>ADDR_<wbr>ENDP</a></div><div class="desc docblock-short">HOST_ADDR_ENDP (rw) register accessor: Interrupt endpoints. Only valid in HOST mode.</div></li><li><div class="item-name"><a class="type" href="type.INTE.html" title="type rp2040_pac::usbctrl_regs::INTE">INTE</a></div><div class="desc docblock-short">INTE (rw) register accessor: Interrupt Enable</div></li><li><div class="item-name"><a class="type" href="type.INTF.html" title="type rp2040_pac::usbctrl_regs::INTF">INTF</a></div><div class="desc docblock-short">INTF (rw) register accessor: Interrupt Force</div></li><li><div class="item-name"><a class="type" href="type.INTR.html" title="type rp2040_pac::usbctrl_regs::INTR">INTR</a></div><div class="desc docblock-short">INTR (r) register accessor: Raw Interrupts</div></li><li><div class="item-name"><a class="type" href="type.INTS.html" title="type rp2040_pac::usbctrl_regs::INTS">INTS</a></div><div class="desc docblock-short">INTS (r) register accessor: Interrupt status after masking &amp; forcing</div></li><li><div class="item-name"><a class="type" href="type.INT_EP_CTRL.html" title="type rp2040_pac::usbctrl_regs::INT_EP_CTRL">INT_<wbr>EP_<wbr>CTRL</a></div><div class="desc docblock-short">INT_EP_CTRL (rw) register accessor: interrupt endpoint control register</div></li><li><div class="item-name"><a class="type" href="type.MAIN_CTRL.html" title="type rp2040_pac::usbctrl_regs::MAIN_CTRL">MAIN_<wbr>CTRL</a></div><div class="desc docblock-short">MAIN_CTRL (rw) register accessor: Main control register</div></li><li><div class="item-name"><a class="type" href="type.NAK_POLL.html" title="type rp2040_pac::usbctrl_regs::NAK_POLL">NAK_<wbr>POLL</a></div><div class="desc docblock-short">NAK_POLL (rw) register accessor: Used by the host controller. Sets the wait time in microseconds before trying again if the device replies with a NAK.</div></li><li><div class="item-name"><a class="type" href="type.SIE_CTRL.html" title="type rp2040_pac::usbctrl_regs::SIE_CTRL">SIE_<wbr>CTRL</a></div><div class="desc docblock-short">SIE_CTRL (rw) register accessor: SIE control register</div></li><li><div class="item-name"><a class="type" href="type.SIE_STATUS.html" title="type rp2040_pac::usbctrl_regs::SIE_STATUS">SIE_<wbr>STATUS</a></div><div class="desc docblock-short">SIE_STATUS (rw) register accessor: SIE status register</div></li><li><div class="item-name"><a class="type" href="type.SOF_RD.html" title="type rp2040_pac::usbctrl_regs::SOF_RD">SOF_RD</a></div><div class="desc docblock-short">SOF_RD (r) register accessor: Read the last SOF (Start of Frame) frame number seen. In device mode the last SOF received from the host. In host mode the last SOF sent by the host.</div></li><li><div class="item-name"><a class="type" href="type.SOF_WR.html" title="type rp2040_pac::usbctrl_regs::SOF_WR">SOF_WR</a></div><div class="desc docblock-short">SOF_WR (w) register accessor: Set the SOF (Start of Frame) frame number in the host controller. The SOF packet is sent every 1ms and the host will increment the frame number by 1 each time.</div></li><li><div class="item-name"><a class="type" href="type.USBPHY_DIRECT.html" title="type rp2040_pac::usbctrl_regs::USBPHY_DIRECT">USBPHY_<wbr>DIRECT</a></div><div class="desc docblock-short">USBPHY_DIRECT (rw) register accessor: This register allows for direct control of the USB phy. Use in conjunction with usbphy_direct_override register to enable each override bit.</div></li><li><div class="item-name"><a class="type" href="type.USBPHY_DIRECT_OVERRIDE.html" title="type rp2040_pac::usbctrl_regs::USBPHY_DIRECT_OVERRIDE">USBPHY_<wbr>DIRECT_<wbr>OVERRIDE</a></div><div class="desc docblock-short">USBPHY_DIRECT_OVERRIDE (rw) register accessor: Override enable for each control in usbphy_direct</div></li><li><div class="item-name"><a class="type" href="type.USBPHY_TRIM.html" title="type rp2040_pac::usbctrl_regs::USBPHY_TRIM">USBPHY_<wbr>TRIM</a></div><div class="desc docblock-short">USBPHY_TRIM (rw) register accessor: Used to adjust trim values of USB phy pull down resistors.</div></li><li><div class="item-name"><a class="type" href="type.USB_MUXING.html" title="type rp2040_pac::usbctrl_regs::USB_MUXING">USB_<wbr>MUXING</a></div><div class="desc docblock-short">USB_MUXING (rw) register accessor: Where to connect the USB controller. Should be to_phy by default.</div></li><li><div class="item-name"><a class="type" href="type.USB_PWR.html" title="type rp2040_pac::usbctrl_regs::USB_PWR">USB_PWR</a></div><div class="desc docblock-short">USB_PWR (rw) register accessor: Overrides for the power signals in the event that the VBUS signals are not hooked up to GPIO. Set the value of the override and then the override enable to switch over to the override value.</div></li></ul></section></div></main></body></html>