High Speed Transmit UART | Cypress Semiconductor
High Speed Transmit UART
The component capability of PSoC Creator allows Cypress to deliver a library of components that you can include in your design. It also allows custom components to be created when the standard library doesn't have exactly what you need. For example the standard UART component in the library supports a large number of options. Many of those options are to enable a robust implementation when receiving. In order to do that it operates with an 8x or 16x oversampled clock. It turns out in an application I ran into I only needed to support UART transmission, but it needed to operate as fast as possible. The standard component only supports up to 3 Mbaud due to the oversampled clock.
No problem. A custom component to do just what I need will be small and fast. I only need to support the typical UART configuration of 8 bits, no parity and 1 stop bit (8-N-1).
I've added this Tx only UART to the PSoC Sensei Library. This component uses the datapath and the PLD portions of the PSoC Universal Digital Blocks (UDB), so in future posts I'll describe the design process that was used to build this component.
I've attached two simple test projects to show the UART being written by the CPU and to show the UART being written using DMA. Both these projects are in the same Workspace. Just select the project that you want to use and build and download it to the DVK to experiment. The transmit pin in these examples is connected to pin 0, so wire that up in the breadboard area to the Tx connector just to the left of the breadboard area. Also make sure that you have jumper J10 connected to provide power to the RS232 drivers. Then hook the design up to a terminal emulator running at 57.6K baud. The CPU based design will print out "Hello, world!" each time the device is reset. The DMA based design will print all the capital letters continually as fast as the baud rate will allow.
You'll need the updated PSoC Sensei Library and the Test projects. Unzip both of these in the same parent directory.