How to use the UART or HSU (Hight speed UART) interface


The Universal Asynchronous Receiver/Transmitter (UART) controller is the key component of the serial communications subsystem of a computer. The UART takes bytes of data and transmits the individual bits in a sequential fashion. At the destination, a second UART re-assembles the bits into complete bytes.

Serial transmission is commonly used with modems and for non-networked communication between computers, terminals and other devices.

There are two primary forms of serial transmission: Synchronous and Asynchronous. Depending on the modes that are supported by the hardware, the name of the communication sub-system will usually include a A if it supports Asynchronous communications, and a S if it supports Synchronous communications.


Contents

  1. What is HSU
  2. Specifications
  3. Minimum PC Requirements
  4. Benefits of using HSU
  5. Software Serial Example
    1. Hardware requirement
    2. Circuit
    3. Code example
  6. References

What is HSU


Frontline's High Speed UART (HSU) Protocol Analyzer lets you capture Bluetooth, WCI-2 (or HCI), and 802.11 data data directly. It is extremely portable and requires very little set up. Using Frontline's ComProbe HSU analyzer lets you view detailed packet information and display all HCI commands and events within the powerful and mature ComProbe Protocol Analysis System software UI.

high speed uart protocol analyzer
Figure 1 - Frontline's High Speed UART (HSU) Protocol Analyzer

The ComProbe HSU analyzer come built in with Frontline’s ProbeSync technology - a clock sharing technology for use with Frontline ComProbe analyzers. This means you will save time debugging and troubleshooting your Bluetooth enabled devices by capturing and viewing Bluetooth packets simultateously from BOTH over-the-air Bluetooth data using the ComProbe BPA 600 analyzer AND over-the-wire HCI (HSU) Bluetooth data using the ComProbe HSU analyzer. No more wondering when a packet came through, searching for correlations between capture files, etc. See both sets of data together and synchronized the way you need it.

Specifications


Dimensions 2.75x 2.0 x 0.9 inches
Power USB Powered
Accessories 6’ Shielded High-Speed USB cable

Connection Cable:

22-gauge test wires with 0.025” square sockets (total of 9, various colors)

Male RJ-45 socket ProbeSync connector

9 high-quality miniature test clips that allow connection

Maximum Operating Speed 100 MHz
Maximum Rate of Data Capture 6Mbps
TTL Level Inputs High level (logic 1): +2V to +5V

Low level (logic 0): 0V to +0.8V

Logs data from 8 digital channels
Sample Data Rate 100 Mbps
The HCI sniffer displays and decodes all the protocol layers all the way through the profile. The profile list includes:
  • ATT
  • L2CAP
  • SDP
  • RFCOMM
  • OBEX
  • OPP
  • FTP
  • BIP
  • SMP
  • HFP
  • HID
  • HSP
  • HCRP
  • SAP
  • MAP
  • HDP

Minimum PC Requirements


  • Pentium PC 2 GHz or faster
  • Windows XP (32-bit) or Windows 7 (32-bit or 64-bit)
  • 2 GB of RAM
  • 50 MB free disk space
  • One USB 2.0 port

Benefits of using HSU


  • Reduce Debugging Time
  • Data You Can Trust
  • Synced with Bluetooth
  • Easy to use and portable
  • USB-powered
  • Full serial protocol support - sniff H4, H5 and BCSP.
  • Easy SSP Decryption
  • Direct TTL connection to your HCI UART transport layer.
  • Needs access to the Rx (receive), Tx (transmitt) and Gnd (Ground) terminls of the serial HCI link. These points are at TTL (Transistor, Transistor Logic voltage levels).

Software Serial Example


Serial is used for communication between the Arduino board and a computer or other devices. All Arduino boards have at least one serial port (also known as a UART or USART): Serial. It communicates on digital pins 0 (RX) and 1 (TX) as well as with the computer via USB. Thus, if you use these functions, you cannot also use pins 0 and 1 for digital input or output. You can use the Arduino environment's built-in serial monitor to communicate with an Arduino board. Click the serial monitor button in the toolbar and select the same baud rate used in the call to begin().

Arduinos have built in support for serial communication on pins 0 and 1, but what if you need more serial ports? The SoftwareSerial Library has been developed to allow serial communication to take place on the other digital pins of your Arduino, using software to replicate the functionality of the hardwired RX and TX lines. This can be extremely helpful when the need arises to communicate with two serial enabled devices, or to talk with just one device while leaving the main serial port open for debugging purpose. In the example below, digital pins 10 and 11 on your Arduino are used as virtual RX and TX serial lines. The virtual RX pin is set up to listen for anything coming in on via the main serial line, and to then echo that data out the virtual TX line. Conversely, anything received on the virtual RX is sent out over the hardware TX.

Hardware requirement

This example requires an Arduino Board.

Circuit

Make sure that your Arduino is attached to your computer via USB to enable serial communication.

Code example

/*
 Software serial multple serial test

Receives from the hardware serial, sends to software serial.
Receives from software serial, sends to hardware serial.

The circuit: 
* RX is digital pin 10 (connect to TX of other device)
* TX is digital pin 11 (connect to RX of other device)

Note:
Not all pins on the Mega and Mega 2560 support change interrupts, 
so only the following can be used for RX: 
10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69

Not all pins on the Leonardo support change interrupts, 
so only the following can be used for RX: 
8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

created back in the mists of time
modified 25 May 2012
by Tom Igoe
based on Mikal Hart's example

This example code is in the public domain.

*/
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()  
{
 // Open serial communications and wait for port to open:
 Serial.begin(57600);
 while (!Serial) {
   ; // wait for serial port to connect. Needed for Leonardo only
 }


 Serial.println("Goodnight moon!");

 // set the data rate for the SoftwareSerial port
 mySerial.begin(4800);
 mySerial.println("Hello, world?");
}

void loop() // run over and over
{
 if (mySerial.available())
   Serial.write(mySerial.read());
 if (Serial.available())
   mySerial.write(Serial.read());
}

References


More information