UART: Difference between revisions

From WSdev Wiki
Jump to navigationJump to search
(Fixes data register. Adds register addresses and access types. Splits Serial Control into Status and Control.)
(Splits Serial Data into Serial Receive Data and Serial Transmit Data)
 
Line 17: Line 17:
== I/O ports ==
== I/O ports ==


{{Anchor|Serial Data}}
{{Anchor|Serial Receive Data}}
=== Serial Data ($B1) ===
=== Serial Receive Data ($B1 read) ===


<pre>
<pre>
Line 25: Line 25:
dddd dddd
dddd dddd
|||| ||||
|||| ||||
++++-++++- Read a byte from the receive buffer, or
++++-++++- Receive buffer value
          Write a byte into the transmit buffer.
</pre>
 
{{Anchor|Serial Transmit Data}}
=== Serial Transmit Data ($B1 write) ===
 
<pre>
7  bit  0
---- ----
dddd dddd
|||| ||||
++++-++++- Transmit buffer value
</pre>
</pre>



Latest revision as of 12:05, 22 August 2023

The WonderSwan's EXT port features an UART operating with the following configuration:

  • 9,600 or 38,400 bps (bauds per second),
  • 8N1 (8 data bits followed by 1 stop bit, no parity).

This allows for an effective maximum transfer speed of 960 or 3840 bytes per second, respectively.

The hardware also features one-byte transmit and receive buffers, which allow for a slight delay in code when handling data to/from the console.

Interrupts

The UART features two interrupts:

  • UART Send Ready - constantly active while the transmit buffer is empty (Serial Status bit 2),
  • UART Receive Ready - constantly active while the receive buffer contains a byte (Serial Status bit 0).

I/O ports

Serial Receive Data ($B1 read)

7  bit  0
---- ----
dddd dddd
|||| ||||
++++-++++- Receive buffer value

Serial Transmit Data ($B1 write)

7  bit  0
---- ----
dddd dddd
|||| ||||
++++-++++- Transmit buffer value

Serial Status ($B3 read)

7  bit  0
---- ----
eb.. .tor
||    |||
||    ||+- 1 if the receive buffer contains a byte
||    |+-- 1 on overrun (receive buffer overflow)
||    +--- 1 if the transmit buffer is empty (can transmit another byte)
|+-------- UART speed: 0 = 9600 bps, 1 = 38400 bps
+--------- UART enable: 0 = off, 1 = on

Serial Control ($B3 write)

7  bit  0
---- ----
ebO. ....
|||
||+------- Write 1 to reset overrun
|+-------- UART speed: 0 = 9600 bps, 1 = 38400 bps
+--------- UART enable: 0 = off, 1 = on