Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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