Skip to content

Commit 85906db

Browse files
committed
targets: add UART implementation for TKey
Signed-off-by: deadprogram <[email protected]>
1 parent 75734d7 commit 85906db

File tree

3 files changed

+35
-30
lines changed

3 files changed

+35
-30
lines changed

src/device/tkey/tkey.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,22 +76,13 @@ type UDS_Type struct {
7676
}
7777

7878
type UART_Type struct {
79-
_ [40]byte
80-
BIT_RATE volatile.Register16
81-
_ [2]byte
82-
DATA_BITS volatile.Register16
83-
_ [2]byte
84-
STOP_BITS volatile.Register16
85-
_ [58]byte
86-
RX_STATUS volatile.Register16
87-
_ [2]byte
88-
RX_DATA volatile.Register16
89-
_ [2]byte
90-
RX_BYTES volatile.Register16
91-
_ [16]byte
92-
TX_STATUS volatile.Register16
93-
_ [2]byte
94-
TX_DATA volatile.Register16
79+
_ [128]byte
80+
RX_STATUS volatile.Register32
81+
RX_DATA volatile.Register32
82+
RX_BYTES volatile.Register32
83+
_ [116]byte
84+
TX_STATUS volatile.Register32
85+
TX_DATA volatile.Register32
9586
}
9687

9788
type TOUCH_Type struct {

src/machine/machine_tkey.go

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,34 +37,47 @@ func (p Pin) Set(high bool) {
3737
}
3838

3939
type UART struct {
40-
Bus *tkey.UART_Type
41-
Buffer *RingBuffer
40+
Bus *tkey.UART_Type
4241
}
4342

4443
var (
45-
UART0 = &_UART0
46-
_UART0 = UART{Bus: tkey.UART, Buffer: NewRingBuffer()}
44+
DefaultUART = UART0
45+
UART0 = &_UART0
46+
_UART0 = UART{Bus: tkey.UART}
4747
)
4848

49+
// Thw TKey UART is fixed at 62500 baud, 8N1.
4950
func (uart *UART) Configure(config UARTConfig) {
50-
if config.BaudRate == 0 {
51-
config.BaudRate = 115200
52-
}
53-
54-
uart.SetBaudRate(config.BaudRate)
5551
}
5652

5753
func (uart *UART) SetBaudRate(br uint32) {
58-
uart.Bus.BIT_RATE.Set(uint16(18e6 / br))
5954
}
6055

61-
func (uart *UART) writeByte(c byte) error {
56+
func (uart *UART) Write(data []byte) (n int, err error) {
57+
for _, c := range data {
58+
if err := uart.WriteByte(c); err != nil {
59+
return n, err
60+
}
61+
}
62+
return len(data), nil
63+
}
64+
65+
func (uart *UART) WriteByte(c byte) error {
6266
for uart.Bus.TX_STATUS.Get() == 0 {
6367
}
6468

65-
uart.Bus.TX_DATA.Set(uint16(c))
69+
uart.Bus.TX_DATA.Set(uint32(c))
6670

6771
return nil
6872
}
6973

70-
func (uart *UART) flush() {}
74+
func (uart *UART) Buffered() int {
75+
return int(uart.Bus.RX_BYTES.Get())
76+
}
77+
78+
func (uart *UART) ReadByte() (byte, error) {
79+
for uart.Bus.RX_STATUS.Get() == 0 {
80+
}
81+
82+
return byte(uart.Bus.RX_DATA.Get()), nil
83+
}

targets/tkey.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,6 @@
4242
"src/runtime/asm_riscv.S",
4343
"src/device/tkey/crt0.S"
4444
],
45-
"flash-command": "tkey-runapp {bin}"
45+
"flash-command": "tkey-runapp {bin}",
46+
"serial": "uart"
4647
}

0 commit comments

Comments
 (0)