Mercurial > louis > kiibohd-controller
view Scan/UARTConnect/capabilities.kll @ 389:fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
- Rx buffers weren't fast enough, had to use DMA :D
- Basic LCD remote capabilities are working, single node
- Multi-node broadcast seems to have a bug still
- DMA ring buffer allowed for significant processing simplification
* There is an overrun risk, but the buffer is large and generally there isn't too much data being sent (just very quickly)
- Split out LCD layer stack capability into itself and an "exact" version used for updating remote nodes
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Thu, 15 Oct 2015 00:16:36 -0700 |
parents | dbefb68411e1 |
children |
line wrap: on
line source
Name = UARTConnectCapabilities; Version = 0.1; Author = "HaaTa (Jacob Alexander) 2015"; KLL = 0.3a; # Modified Date Date = 2015-03-15; # UART Buffer Size # Number of bytes to reserve for each side of UARTConnect # For true NKRO support must be at least: <# of Keys> x 3 + 5 UARTConnectBufSize => UARTConnectBufSize_define; UARTConnectBufSize = 128; # MDErgo1 requires at least a 119 byte buffer # UART Speed # *NOTE* This must be changed on every device in the chain or else UARTConnect will not work # The faster the speed, the lower the latency, but higher chance for an error UARTConnectBaud => UARTConnectBaud_define; UARTConnectBaudFine => UARTConnectBaudFine_define; # Generally, leave BaudFine at zero unless trying to tune the link to an external UART # You'll want to look at the specific chip datasheet for the exact equation # # Example of 115200 Baud using a 48 MHz clock (mk20dx128vlf5) # 48 MHz / ( 16 * Baud ) = BDH/L # Baud: 115200 -> 48 MHz / ( 16 * 115200 ) = 26.0416667 # Thus baud setting = 26 # NOTE: If finer baud adjustment is needed see UARTx_C4 -> BRFA in the datasheet # Baud fine setting = 0x02 UARTConnectBaud = 1; # 4.5 Mbpsa @ 72 MHz UARTConnectBaudFine = 0x0; #UARTConnectBaud = 39; # 115385 bps @ 72 MHz (close to 115200) # Cable Check Command Length # This defines the length of the cable command # 0xD2 11010010 is used for each check byte # # For example: # Length: 4 # Args: 0xD2 0xD2 0xD2 0xD2 UARTConnectCableCheckLength => UARTConnectCableCheckLength_define; UARTConnectCableCheckLength = 2; # Connect Enable # Define used to indicate to non-connect modules that support should be compiled in ConnectEnabled => ConnectEnabled_define; ConnectEnabled = 1;