Slides_5 - Real-Time Embedded Systems Lab

advertisement
Coldfire 5211 Signals and IO Multiplexing
Computer Science & Engineering Department
Arizona State University
Tempe, AZ 85287
Dr. Yann-Hang Lee
yhlee@asu.edu
(480) 727-7507
7/23
Coldfire 5211 Processor
 64-pin LQFP (Low Profile Quad
Flat Pack packages )
 81-ball MAPBGA (Multi-array
Plastic Ball Grid Array)
 16Kb SRAM
 128Kb flash
set 5 -- 1
5211 64-pin Package
 There are many I/O functions to connect
to external signals and the number of
pins in a chip is limited
 Multiplex multiple I/O functions to one pin
 primary function,
 alternate functions,
 general-purpose I/O
 Pin function is set by the operating mode
 Pin layout shows primary functions
set 5 -- 2
Coldfire GPIO
 I/O pins are grouped into 8-bit ports. Some ports do not use all 8 bits.
Each port has registers that configure, monitor, and control the port
pins.
set 5 -- 3
Coldfire Port Registers
 Port Output Data Registers (PORTn)
 store the data to be driven on the corresponding port n pins when the
pins are configured for digital output.
 Port Data Direction Registers (DDRn)
 control the direction of the port n pin drivers
pin
assignment
pad control
set 5 -- 4
Coldfire Port Registers
 Port Pin Data/Set Data Registers (PORTnP/SETn)
 reflect the current pin states and control the setting of output pins
 Port Clear Output Data Registers (CLRn)
 Writing 0s to a CLRn register clears the corresponding bits in the
PORTn register.
 Pin Assignment Registers (PnPAR_)
 allow each pin controlled by each register bit to be configured
between the multiplexed functions
 Pad Control Registers
 pin slew rate register
 pin drive strength register (10mA or 2mA)
set 5 -- 5
Example: UART Pin Initialization
 To configure the pins for UART0 and UART1 to their primary functions
#define MCF_GPIO_PUAPAR
(*(vuint8 *)(&__IPSBAR[0x100059]))
#define MCF_GPIO_PUBPAR
(*(vuint8 *)(&__IPSBAR[0x10005A]))
#define MCF_GPIO_PUAPAR_RXD0_RXD0 (0x04)
#define MCF_GPIO_PUAPAR_TXD0_TXD0 (0x01)
void mcf5211_uart_init(void) {
/* Enable the proper UART pins */
MCF_GPIO_PUBPAR = 0
| MCF_GPIO_PUBPAR_RXD1_RXD1
| MCF_GPIO_PUBPAR_TXD1_TXD1;
MCF_GPIO_PUAPAR = 0
| MCF_GPIO_PUAPAR_RXD0_RXD0
| MCF_GPIO_PUAPAR_TXD0_TXD0;
/* Enable the default UART terminal port */
uart_init(sys_clk_khz, BAUD, 0);
}
set 5 -- 6
Example: LED on DTIN pins
/* Display the lower 4 bits of 'number' on the 4 LEDs connected to DTIN[3:0]
*
* LED: LED4 LED3 LED2 LED1
* PIN: TIN3 TIN2 TIN1 TIN0
* BIT: 3 2 1 0
*/
void leds_init() {
MCF_GPIO_PTCPAR = 0
/* Enable signals as GPIO */
| MCF_GPIO_PTCPAR_TIN3_GPIO
| MCF_GPIO_PTCPAR_TIN2_GPIO
| MCF_GPIO_PTCPAR_TIN1_GPIO
| MCF_GPIO_PTCPAR_TIN0_GPIO;
MCF_GPIO_DDRTC = 0
/* Enable signals as digital outputs */
| MCF_GPIO_DDRTC_DDRTC3
| MCF_GPIO_DDRTC_DDRTC2
| MCF_GPIO_DDRTC_DDRTC1
| MCF_GPIO_DDRTC_DDRTC0;
}
void leds_dsiplay (unit8 number)
{
MCF_GPIO_PORTTC = number;
}
/* Set output values */
set 5 -- 7
Download