STM32F1 USB

  • 52 Replies
  • 1434 Views
*

Offline tha

  • *****
  • 2078
    • View Profile
Re: STM32F1 USB
« Reply #40 on: April 12, 2021, 07:31:10 am »
Bit 9 SOF: Start of frame
บิตนี้ส่งสัญญานจุดเริ่มต้นของ a new USB frame และมันถูกเซ็ตเมื่อ a SOF packet มาถึงผ่านทาง the USB bus. The interrupt service routine อาจมอนิเตอร์ the SOF events เพื่อให้มี a 1 mS synchronization event ไปยัง the USB host และเพื่อให้อ่านอย่างปลอดภัย the USB_FNR register ซึ่งถูกอัปเดตที่ the SOF packet reception (สิ่งนี้อาจมีประโยชน์สำหรับ isochronous applications).
บิตนี้ถูกอ่าน/เขียนได้แต่มีเพียง ‘0 เท่านั้นสามารถถูกเขียนและการเขียน ‘1 ไม่มีผลอะไร.

*

Offline tha

  • *****
  • 2078
    • View Profile
Re: STM32F1 USB
« Reply #41 on: April 12, 2021, 07:57:25 am »
Bit 8 ESOF: Expected start of frame
บิตนี้ถูกเซ็ตโดย the hardware เมื่อ an SOF packet ถูกคาดหวังแต่ไม่ได้รับ. The host ส่ง an SOF packet แต่ละ mS, แต่ถ้า the hub ไม่ได้รับมันอย่างถูกต้อง, the Suspend Timer จะปล่อยออก interrupt นี้. ถ้า ESOF interrupts สามครั้งติดต่อกันถูกสร้างขึ้น (อย่างเช่น three SOF packets สูญหาย) โดยไม่มีการรับส่งข้อมูลใด ๆ เกิดขึ้นในระหว่างนี้, a SUSP interrupt จะถูกสร้างขึ้น. บิตนี้ถูกเซ็ตแม้เมื่อ the missing SOF packets เกิดขึ้นในขณะ the Suspend Timer ยังไม่ถูกล็อค.
บิตนี้ถูกอ่าน/เขียนได้แต่มีเพียง ‘0 เท่านั้นสามารถถูกเขียนและการเขียน ‘1 ไม่มีผลอะไร.

Bits 7:5 Reserved.

*

Offline tha

  • *****
  • 2078
    • View Profile
Re: STM32F1 USB
« Reply #42 on: April 12, 2021, 08:52:10 am »
Bit 4 DIR: Direction of transaction
บิตนี้ถูกเขียนโดย the hardware สอดคล้องกับทิศทางของ the successful transaction, ซึ่งสร้าง the interrupt request.
ถ้า DIR bit=0, CTR_TX bit ถูกเซ็ตใน the USB_EPnR register ที่เกี่ยวข้องกับ the interrupting endpoint. The interrupting transaction เป็น IN type (data ถูกส่งโดย the USB peripheral ไปยัง the host PC).
ถ้า DIR bit=1, CTR_RX bit หรือทั้ง CTR_TX/CTR_RX ถูกเซ็ตใน the USB_EPnR register ที่เกี่ยวข้องกับ the interrupting endpoint. The interrupting transaction เป็น OUT type (data ถูกรับโดย the USB peripheral จาก the host PC) หรือ two pending transactions กำลังรอถูกปฏิบัติ.
information นี้สามารถถูกใช้โดย the application software เพื่อเข้าถึง the USB_EPnR bits ที่เกี่ยวข้องกับ the triggering transaction เนื่องจากมันแสดงถึง the direction ที่มี the interrupt pending. บิตนี้ถูกอ่านได้เพียงอย่างเดียว

*

Offline tha

  • *****
  • 2078
    • View Profile
Re: STM32F1 USB
« Reply #43 on: April 24, 2021, 09:58:13 am »
Bits 3:0 EP_ID[3:0]: Endpoint Identifier
บิตเหล่านี้ถูกเขียนโดย the hardware สอดคล้องกับ the endpoint number, ซึ่งสร้าง the interrupt request. ถ้าหลาย endpoint transactions กำลังค้างอยู่, the hardware จะเขียน the endpoint identifier ที่เกี่ยวข้องกับ the endpoint ที่มี the highest priority ที่กำหนดในวิธีต่อไปนี้ : Two endpoint sets ถูกกำหนด, ตามลำดับของ priority: Isochronous และ double-buffered bulk endpoints จะถูกพิจารณาก่อนและจากนั้น endpoints อื่นถูกตรวจสอบ. ถ้ามากกว่าหนึ่ง endpoint จากชุดเดียวกันกำลังร้องขอ an interrupt, the EP_ID bits ใน USB_ISTR register ถูกกำหนดสอดคล้องกับ the lowest requesting endpoint register, EP0R จะมี the highest priority ตามด้วย EP1R และต่อไป. The application software สามารถกำหนด a register ไปยังแต่ละ endpoint สอดคล้องกับ priority scheme นี้, เพื่อจัดลำดับ the concurring endpoint requests ในวิธีที่เหมาะสม. บิตนี้ถูกอ่านได้เพียงอย่างเดียว.

*

Offline tha

  • *****
  • 2078
    • View Profile
Re: STM32F1 USB
« Reply #44 on: April 24, 2021, 10:04:03 am »
USB frame number register (USB_FNR)

Address offset: 0x48
Reset value: 0x0XXX where X is undefined



Bit 15 RXDP: Receive data + line status
บิตนี้สามารถถูกใช้เพื่อสังเกตุ the status of received data บวกกับ upstream port data line. มันสามารถถูกใช้ในระหว่าง end-of-suspend routines เพื่อช่วยในการตัดสินใจ the wakeup event.

Bit 14 RXDM: Receive data - line status
บิตนี้สามารถถูกใช้เพื่อสังเกตุ the status of received data ลบ upstream port data line. มันสามารถถูกใช้ในระหว่าง end-of-suspend routines เพื่อช่วยในการตัดสินใจ the wakeup event.

Bit 13 LCK: Locked
บิตนี้ถูกเซ็ตโดย the hardware เมื่ออย่างน้อยสอง SOF packets ที่ติดต่อกันถูกรับแล้วหลังจาก the end of an USB reset condition หรือหลังจาก the end of an USB resume sequence. เมื่อถูกล็อค, the frame timer ยังคงอยู่ในสถานะนี้จนกระทั่ง an USB reset หรือ USB suspend event เกิดขึ้น.

Bits 12:11 LSOF[1:0]: Lost SOF
บิตเหล่านี้ถูกเขียนโดย the hardware เมื่อ an ESOF interrupt ถูกสร้างขึ้น, นับจำนวนของ SOF packets ที่ติดต่อกันที่หายไป. ที่การรับของ an SOF packet, บิตเหล่านี้จะถูกเคลียร์.

Bits 10:0 FN[10:0]: Frame number
bit field นี้บรรจุ the 11-bits frame number ที่บรรจุใน the last received SOF packet. The frame number ถูกเพิ่มขึ้นสำหรับทุกๆ frame ที่ส่งโดย the host และมันมีประโยชน์สำหรับ Isochronous transfers. bit field นี้ถูกอัปเดตบนการสร้างของ an SOF interrupt.

*

Offline tha

  • *****
  • 2078
    • View Profile
Re: STM32F1 USB
« Reply #45 on: April 27, 2021, 09:28:02 am »
USB device address (USB_DADDR)

Address offset: 0x4C
Reset value: 0x0000



Bits 15:8 Reserved

Bit 7 EF: Enable function
บิตนี้ถูกเซ็ตโดย the software เพื่อเปิดการใช้งาน the USB device. The address ของ device นี้ถูกบรรจุใน ADD[6:0] bits ที่ตามมานี้. ถ้าบิตนี้เป็น ‘0 ไม่มี transactions ใดถูกจัดการ, โดยไม่คำนึงถึงการเซ็ตของ USB_EPnR registers.

Bits 6:0 ADD[6:0]: Device address
บิตเหล่านี้บรรจุ the USB function address กำหนดโดย the host PC ในระหว่าง the enumeration process. ทั้ง field นี้และ the Endpoint Address (EA) field ใน USB_EPnR register ที่เกี่ยวข้องต้องตรงกับ the information ที่บรรจุใน a USB token เพื่อจัดการ a transaction ไปยัง endpoint ที่ต้องการ.

*

Offline tha

  • *****
  • 2078
    • View Profile
Re: STM32F1 USB
« Reply #46 on: April 27, 2021, 09:57:15 am »
Buffer table address (USB_BTABLE)

Address offset: 0x50
Reset value: 0x0000



Bits 15:3 BTABLE[15:3]: Buffer table
บิตเหล่านี้บรรจุ the start address ของ the buffer allocation table ภายใน the dedicated packet memory. table นี้อธิบายแต่ละ endpoint buffer location และขนาดและมันต้องถูกจัดแนวให้ตรงกับ an 8 byte boundary (the 3 least significant bits เป็น ‘0 เสมอ). ที่จุดเริ่มต้นของทุกๆ transaction ที่ส่งถึง device นี้, the USP peripheral อ่านองค์ประกอบของ table นี้ที่เกี่ยวข้องกับ the addressed endpoint, เพื่อให้ได้ buffer start location ของมันและ the buffer size (อ้างอิงถึง Structure and usage of packet buffers).

Bits 2:0 Reserved, forced by hardware to 0.

*

Offline tha

  • *****
  • 2078
    • View Profile
Re: STM32F1 USB
« Reply #47 on: June 06, 2021, 07:50:24 am »
23.5.2 Endpoint-specific registers

จำนวนของ registers เหล่านี้แตกต่างกันไปสอดคล้องกับจำนวนของ endpoints ที่ the USB peripheral ถูกออกแบบเพื่อจัดการ. The USB peripheral รองรับได้สูงถึง 8 bidirectional endpoints. แต่ละ USB device ต้องรองรับ a control endpoint ซึ่ง address (EA bits) ต้องถูกเซ็ตเป็น 0. The USB peripheral จะทำงานในลักษณะที่ไม่ได้กำหนดไว้ถ้าหลาย endpoints ที่ถูกเปิดการใช้งานมี the same endpoint number value. สำหรับแต่ละ endpoint, an USB_EPnR register มีให้ใช้งานเพื่อเก็บ the endpoint specific information.

USB endpoint n register (USB_EPnR), n=[0..7]

Address offset: 0x00 to 0x1C
Reset value: 0x0000