Skip to main content

Communication Interfaces

Although the native AT1000 I/O allows for a lot of flexibility, and if speed do not matter, it's possible to emulate any communication protocol (a.k.a. bitbanging) there are some situations where you may want to use a dedicated communication interface.

Dedicated communication interfaces offer several advantages, mainly:

  • Speed: Dedicated communication interfaces are optimized for speed and can handle high data rates, making them ideal for applications that require fast data transfer.
  • Reliability: They provide consistent performance and reduce the likelihood of data loss during transmission.
  • Ease of use: Dedicated interfaces often come with built-in libraries and support, making it easier to implement communication protocols without having to worry about timing and signal integrity.

Supported communication interfaces​

The AT1000 supports the following communication interfaces:

  • I2C: A two-wire, half-duplex communication protocol used for connecting low-speed devices.
  • SPI: A four-wire, full-duplex communication protocol used for high-speed data transfer.
  • UART: A serial communication protocol used for asynchronous data transmission.
  • CAN: A robust vehicle bus standard designed to facilitate communication among various microcontrollers and devices without a host computer.
  • RS232: A standard for serial communication transmission of data.
  • RS485: A standard for serial communication that allows for long-distance communication and multi-point systems.

Pin alternate functions (multiplexing)​

The communication protocols are multiplexed with the existing I/O pins (with the exception of RS232 that has dedidcated pins).

I/O voltage range

When a pin is used for a specific purpose, it cannot be used as a general-purpose I/O, and more importantly, it cannot support the high voltage range of regular I/Os (+/- 25V). Disabling the communication interface will restore the pin to its original I/O function and voltage range.

The following table summarizes the multiplexing of the GPIO pins with the communication interfaces:

AT10032S GPIOSPI 0JTAG 0 *SWD 0 *I2C 0UART 0
DA16MOSI_0TDI_0SWDIO_0SDA_0TX_0
DA17MISO_0TDO_0RX_0
DA18SCK_0TCK_0SWCLK_0SCL_0
DA19TMS_0
AT10032S GPIOSPI 1JTAG 1 *SWD 1 *I2C 1UART 1
DA20MOSI_1TDI_1SWDIO_1SDA_1TX_1
DA21MISO_1TDO_1RX_1
DA22SCK_1TCK_1SWCLK_1SCL_1
DA23TMS_1
* JTAG and SWD: Not currently supported

JTAG and SWD are not currently supported and will be implemented in a future release. The AT1000 device is designed to support JTAG and SWD protocols, but the implementation is not yet available in the current version of the API. Please check back for updates on this feature.

AT10032S GPIOCAN 0RS485 0RS485 1
DA24CANHA(+)
DA25CANLB (-)
DA26A(+)
DA27B(-)
NOTE about RS232

RS232 signals are available on a dedicated port on the front panel of the AT1000 device. Thus, the RS232 interface does not share GPIOs with other interfaces.

What about USB and Ethernet?​

USB and Ethernet are not considered communication interfaces in the same way as the others listed above. They are directly managed by the underlying linux system, and are mainly used for transferring data to and from the DUT (device under test).

USB power cycling

One important test-oriented feature of the USB ports is the ability to power cycle the USB devices. This is done by controlling the power supply to the USB ports, allowing you to turn them on and off programmatically. This feature is particularly useful for testing scenarios where you need to reset or power cycle a device under test (DUT) connected via USB.