====== USB CDC driver for RP2040 ====== ===== The idea ===== This is a compact and universal MSP430 USB CDC driver. Every effort has been made to make it portable. ===== What we need to do in short ===== * Initialising the USB hardware on the RP2040. * Receiving and responding to setup packets from the host (PC). This determines which driver the OS will load. * If the host is satisfied with the setup, then sending and receiving data packets may start. ===== Pseudo code ===== hex Function DEVICE-DECRIPTOR \ 18 bytes 12 c, 01 c, 10 c, 01 c, ( 1.10 ) EF c, 02 c, 01 c, 40 c, 66 c, 66 c, ( 6666 ) 10 c, 66 c, ( 6610 ) 00 c, 01 c, ( vsn 1.00 ) 00 c, 02 c, 00 c, 01 c, align Function CONFIGURATION-DESCRIPTOR \ 9 or 75 bytes 9 c, 2 c, 4B c, 0 c, 2 c, 1 c, 0 c, 80 c, FA c, \ Maximum power = 500mA 8 c, 0B c, 0 c, 2 c, 2 c, 2 c, 1 c, 0 c, \ Interface Association Descriptor - CDC 0 9 c, 4 c, 0 c, 0 c, 1 c, 2 c, 2 c, 1 c, 0 c, \ Interface 1: Control - 1 - 0 - 5 c, 24 c, 0 c, 10 c, 1 c, ( CDC vsn 1.10 ) \ CDC Header functional 5 c, 24 c, 1 c, 0 c, 1 c, \ CDC Call management functional 4 c, 24 c, 2 c, 2 c, \ CDC ACM functional ( two commands ) 5 c, 24 c, 6 c, 0 c, 1 c, \ CDC Union functional ( one interface ) 7 c, 5 c, 81 c, 3 c, 8 c, 0 c, 10 c, \ Endpoint 1 IN descriptor 9 c, 4 c, 1 c, 0 c, 2 c, 0A c, 0 c, 0 c, 0 c, \ Interface 2: DATA 7 c, 5 c, 82 c, 2 c, 40 c, 0 c, 0 c, \ Endpoint 2 IN descriptor 7 c, 5 c, 3 c, 2 c, 40 c, 0 c, 0 c, align \ Endpoint 3 OUT descriptor decimal Function USB-STATE 0 , \ Hold current USB state in first half word: 3 = ready \ In second half word are memory for the 900/880 requests 4 c, 3 c, 9 c, 4 c, \ English/US = language ID 115200 , 0 c, 0 c, 8 c, align \ Line data: 115k2, Stop bits, Parity, Data bits hex