The growing need for security and
enhanced functionality in the banking,
identification, and telecom markets has
increased the use of smart cards worldwide, to the detriment of the low-security
magnetic-stripe cards.
However, the development of the hardware and firmware needed for proper
communications in a system based on a
smart card poses new challenges to
designers. Unfortunately, only some
high-end microcontrollers have a dedicated UART (universal asynchronous
receiver/transmitter) that can drive
smart cards directly. The design
described here, though, lets you drive a
smart card using just the standard UART
on a low-end 8-bit microcontroller, in this
case an Atmel AVR ATmega 168.
Smart cards have just one communication path, labeled I/O, with the outside world, so it's used as a bidirectional signal to input and output data. This
signal must line up with the UART's unidirectional reception and transmission
signals RxD and TxD, respectively.
Because RxD is an input signal and TxD
is an output signal, a 1-kΩ resistor must
be used to connect them to the smartcard I/O line to avoid line contention
().
On the firmware side, the design must
implement a specific procedure for the
reception and transmission of data to
and from the smart card (
). On the one hand, to
receive a byte from the smart card, the
system must disable the UART's transmitter unit—again, to avoid line contention.
On the other hand, to transmit a byte to
the smart card, the firmware must disable the UART's reception unit to avoid
the reception of an echo character. Then
it must wait until the end of the byte
transmission to avoid false byte receptions. In this way, you can exchange information back and forth with the smart
card using the T=0 protocol described in
section 3 of the Smart Card Standard,
ISO 7816-3, Electronic Signals and Transmission Protocols.
As an improvement—and to fully comply with the standard describing the
smart-card communication protocols—the
design must implement the parity error
detection and re-transmission scheme
defined in the ISO 7816-3 standard.