LHO 13 - The C8051F020 and the University Daughter Card
Download
Report
Transcript LHO 13 - The C8051F020 and the University Daughter Card
LHO 13
The 8051CF020 and the University
Daughter Card
1
Resources
• https://www.silabs.com/Support%20Docum
ents/TechnicalDocs/C8051F02x.pdf
• University Daughter Card User Manual
• Embedded_Programming_Textbook.zip
2
Peak throughput
25 MIPS
FLASH program memory
64 K
On-chip data RAM
4352 bytes
Full-duplex UARTS
x2
16-bit timers
x5
Digital I/O ports
64-pin
12-bit 100 ksps ADC
8 channels
8-bit 500 ksps ADC
8 channels
DAC resolution
12-bit
DAC outputs
x2
Analog comparators
x2
Interrupts
2 levels
PCA (programmable counter arrays)
5 channels
Internal oscillator
25 Mhz
Debug circuitry
3
Standard 8051
4
C8051F020
5
6
7
8
I/O Ports
• Ports 0, 1, 2 and 3 are bit- and byte-addressable
• Four additional ports (4, 5, 6 and 7) are byte-addressable
only
• There are a total of 64 general purpose port I/O pins
• Access to the ports is possible through reading and
writing the corresponding port data registers (P0, P1,
etc.)
• All port pins are 5 V tolerant and support configurable
input/output modes and weak pull-ups
• In addition, the pins on Port 1 can be used as
analog inputs to ADC1
9
The Digital Crossbar
• The digital crossbar is
essentially a large
digital switching
network that allows
mapping of internal
digital peripherals to the
pins on Ports 0 to 3
• This is achieved by
configuring the crossbar
control registers XBR0,
XBR1 and XBR2
• Allows the system
designer to select the
exact mix of GPIO and
digital resources needed
for the particular
application
10
12-Bit Analog-to-Digital Converter (ADC0)
• On-chip 12-bit successive approximation register (SAR) analog-todigital converter (ADC0)
• 9-channel input multiplexer and programmable gain amplifier
• The ADC is configured via its associated special function registers
• One input channel is tied to an internal temperature sensor, while the
other 8 channels are available externally
11
8-Bit Analog-to-Digital Converter (ADC1)
• On-board 8-bit SAR analog-to-digital converter (ADC1)
• Port 1 can be configured for analog input
• 8-channel input multiplexer and programmable gain
amplifier
• The ADC is configurable via its configuration SFRs
12
Digital-to-Analog Converters
• Two 12-bit digital-toanalog converters: DAC0
and DAC1
• The DAC voltage
reference is supplied via
the dedicated VREFD
input pin
• The DACs are especially
useful as references for the
comparators
13
Comparators
•
There are two analog
comparators on chip:
CP0 and CP1
•
The comparators have
software programmable
hysteresis
•
Generate an interrupt on its
rising edge, falling edge or
both
•
The comparators' output state
can also be polled in software
and programmed to appear on
the lower port I/O pins via the
crossbar
14
Voltage Reference for ADC and DAC
• A voltage reference has to
be used when operating the
ADC and DAC
• Three external voltage
reference input pins:
VREF0, VREF1 and
VREFD
• ADC0 may also reference
the DAC0 output internally
• ADC1 may also reference
the analog power supply
voltage (AV+)
15
Internal Voltage Reference Generator
• The internal voltage reference circuit consists of a 1.2 V
band-gap voltage reference generator and a gain-of-two
output buffer amplifier (2.4 V output)
• The internal reference may be routed via the VREF pin to
external system components or to the voltage reference
input pins
• The reference control register, REF0CN, enables/disables
the internal reference generator and selects the reference
inputs for ADC0 and ADC1
16
ToolStick
UniDC
Hardware
Overview
DIP Switches
Push-button Switches
LEDs
Power LED
Indicates
3.3V is
available
P4
P5[7..4]
P5[3..0]
Prototype Area
Reset
Switch
I/O Pins
P0[7..2], P1, P2
Target MCU
C8051F020
Analog
I/O Pins
Crystal
22.1184 MHz
Potentiometer
Linear output that sweeps from 0V to 3.3V
17
Handling The ToolStick
• Caution: The modular ToolStick components are not
encased in plastic. This makes both the base adapter (BA)
and the daughter cards (DC) susceptible to electrostatic
discharge (ESD) damage.
• Follow these recommendations to protect the hardware
– Never connect or disconnect a ToolStick daughter card from the
base adapter while connected to a PC
– Always connect or disconnect a ToolStick by holding the large
plastic connector or the edges of the boards
– Be careful when using the mechanical components, such as the
potentiometers, so as to not stress the connectors
18
Handling The ToolStick
The Wrong way to hold the ToolStick
19
Handling The ToolStick
The Correct way to hold the ToolStick
20
21
22
Consider a simple program
#include <c8051f020.h>
// SFR declarations
extern void Init(void);
// in udc_init,c
extern void wr_leds(unsigned char); // in unc_init.c
extern unsigned char rd_buttons(void); // in unc_init.c
void main (void)
{
Init(); // call to external function initialize UDC
while(1)
{
wr_leds(rd_buttons()); // call external functions
}
}
23
//udc_init.c - version 1.0
#include <c8051f020.h> // SFR declarations
//---------------------------------------------------// Init - Configure UDC
// Returns
: None
// Parameters : None
//----------------------------------------------------void Ext_Osc_Init(void); // switch clock to XTAL
void init_crossbar(void);
void init_ports(void);
24
void Init (void)
{
// Disable interrupts
EA = 0;
// Disable watchdog timer
WDTCN = 0xde;
WDTCN = 0xad;
// Enable crossbar switch
init_crossbar();
// Set up ports
init_ports();
Ext_Osc_Init(); // Use external XTAL
}
25
26
//----------------------------------------------------------------------------// Init_crosbar - Configure crossbar switch
// Returns : None
// Parameters : None
//----------------------------------------------------------------------------void init_crossbar (void)
{
XBR0 = 0x04; // Enable UART 0 TX to P0.0, RX to P0.1
XBR1 = 0x80; // Output system clock to P0.2
P74OUT = 0x08; // Set P5(7_4) to push pull output
XBR2 = 0x40; // Enable cross bar
}
27
XBR2 = 0x40; // Enable cross bar
28
XBR0 = 0x04; // Enable UART 0 TX to P0.0, RX to P0.1
29
XBR1 = 0x80; // Output system clock to P0.2
30
P74OUT = 0x08; // Set P5(7_4) to push pull output
31
XBR2 = 0x40; // Enable cross bar
32
void init_ports(void)
{
P0MDOUT = 0x04; //Set P0.2 (sys clk) to push pull for fast rise time
P1MDOUT = 0x00;
P2MDOUT = 0xFF; //Set P2 to push pull for fast rise times
P3MDOUT = 0x00;
P5 = 0x0f;
//TURN ON LEDS
}
33
void wr_leds(unsigned char leds)
{
P5 = (leds << 4) | 0x0f;
}
unsigned char rd_buttons(void)
{
unsigned char btns;
btns = (~P5) & 0x0f;
return(btns);
}
34