RabbitCore RCM3200 C-Programmable Module with Ethernet User’s Manual 019–0118 • 060831–J
RabbitCore RCM3200 User’s Manual Part Number 019-0118 • 060831–J • Printed in U.S.A. ©2002–2006 Rabbit Semiconductor Inc. • All rights reserved. No part of the contents of this manual may be reproduced or transmitted in any form or by any means without the express written permission of Rabbit Semiconductor. Permission is granted to make one or more copies as long as the copyright page contained therein is included.
TABLE OF CONTENTS Chapter 1. Introduction 1 1.1 RCM3200 Features ...............................................................................................................................1 1.2 Advantages of the RCM3200 ...............................................................................................................3 1.3 Development and Evaluation Tools......................................................................................................3 1.4 How to Use This Manual ......
Chapter 5. Software Reference 29 5.1 More About Dynamic C ..................................................................................................................... 29 5.2 Dynamic C Function Calls ................................................................................................................. 31 5.2.1 Digital I/O................................................................................................................................... 31 5.2.2 SRAM Use...................
C.6 Bezel-Mount Installation....................................................................................................................79 C.6.1 Connect the LCD/Keypad Module to Your Prototyping Board.................................................81 C.7 LCD/Keypad Module Function Calls ................................................................................................82 C.7.1 LCD/Keypad Module Initialization..............................................................................
RabbitCore RCM3200
1. INTRODUCTION The RCM3200 RabbitCore™ module is designed to be the heart of embedded control systems. The RCM3200 features an integrated 10/100Base-T Ethernet port and provides for LAN and Internet-enabled systems to be built as easily as serial-communication systems. Throughout this manual, the term RCM3200 refers to the complete series of RCM3200 RabbitCore modules unless other production models are referred to specifically. The RCM3200 has a Rabbit® 3000 microprocessor operating at 44.
• Watchdog supervisor • Provision for customer-supplied backup battery via connections on header J2 • 10/100Base-T RJ-45 Ethernet port • 10-bit free-running PWM counter and four width registers • Two-channel Input Capture can be used to time input signals from various port pins • Two-channel Quadrature Decoder accepts inputs from external incremental encoder modules • Six CMOS-compatible serial ports: maximum asynchronous baud rate of 5.5 Mbps.
1.2 Advantages of the RCM3200 • Fast time to market using a fully engineered, “ready to run” microprocessor core. • Competitive pricing when compared with the alternative of purchasing and assembling individual components. • Easy C-language program development and debugging • Program Download Utility and cloning board options for rapid production loading of programs. • Generous memory size allows large programs with tens of thousands of lines of code, and substantial data storage.
1.4 How to Use This Manual This user’s manual is intended to give users detailed information on the RCM3200 module. It does not contain detailed information on the Dynamic C development environment or the TCP/IP software support for the integrated Ethernet port. Most users will want more detailed information on some or all of these topics in order to put the RCM3200 module to effective use. 1.4.
2. HARDWARE SETUP This chapter describes how to set up and connect the RCM3200 and the Prototyping Board included in the Development Kit. NOTE: This chapter (and this manual) assume that you have the RCM3200 Development Kit. If you purchased an RCM3200 module by itself, you will have to adapt the information in this chapter and elsewhere to your test and development setup. 2.1 Development Kit Contents The RCM3200 Development Kit contains the following items: • RCM3200 module. • Prototyping Board.
2.2 Hardware Connections 2.2.1 Attach Module to Prototyping Board Turn the RCM3200 module so that the Ethernet connector end of the module extends off the Prototyping Board, as shown in Figure 1 below. Align the pins from headers J1 and J2 on the bottom side of the module into header sockets RCM2JA and RCM2JB on the Prototyping Board (these sockets were labeled J12 and J13 on earlier versions of the Prototyping Board).
2.2.2 Connect Programming Cable The programming cable connects the RCM3200 to the PC running Dynamic C to download programs and to monitor the RCM3200 module during debugging. Connect the 10-pin connector of the programming cable labeled PROG to header J3 on the RCM3200 module as shown in Figure 2. Be sure to orient the marked (usually red) edge of the cable towards pin 1 of the connector. (Do not use the DIAG connector, which is used for a normal serial connection.
2.2.3 Connect Power When all other connections have been made, you can connect power to the Prototyping Board. Connect the wall transformer to jack J11 on the Prototyping Board as shown in Figure 3 below.
2.3 Run a Sample Program If you already have Dynamic C installed, you are now ready to test your programming connections by running a sample program. The RCM3200 runs at 44.2 MHz, and has a fast program execution SRAM to ensure that the memory where any programs run can handle the higher clock speed.
• Select a different COM port within Dynamic C. From the Options menu, select Project Options, then select Communications. Select another COM port from the list, then click OK. Press to force Dynamic C to recompile the BIOS. If Dynamic C still reports it is unable to locate the target system, repeat the above steps until you locate the active COM port. 2.
3. RUNNING SAMPLE PROGRAMS To develop and debug programs for the RCM3200 (and for all other Rabbit Semiconductor hardware), you must install and use Dynamic C. 3.1 Introduction To help familiarize you with the RCM3200 modules, Dynamic C includes several sample programs. Loading, executing and studying these programs will give you a solid hands-on overview of the RCM3200’s capabilities, as well as a quick start using Dynamic C as an application development tool.
3.2 Sample Programs Of the many sample programs included with Dynamic C, several are specific to the RCM3200. Sample programs illustrating the general operation of the RCM3200, and serial communication are provided in the SAMPLES\RCM3200 folder. Each sample program has comments that describe the purpose and function of the program. Follow the instructions at the beginning of the sample program. • CONTROLLED.
3.2.1 Serial Communication The following sample programs can be found in the SAMPLES\RCM3200\SERIAL folder. • FLOWCONTROL.C—This program demonstrates hardware flow control by configuring Serial Port C (PC3/PC2) for CTS/RTS with serial data coming from TxB at 115,200 bps. One character at a time is received and is displayed in the STDIO window.
• SWITCHCHAR.C—This program demonstrates transmitting and then receiving an ASCII string on Serial Ports B and C. It also displays the serial data received from both ports in the STDIO window. To set up the Prototyping Board, you will need to tie TxB and RxC together on the RS-232 header at J5, and you will also tie RxB and TxC together using the jumpers supplied in the Development Kit as shown in the diagram.
4. HARDWARE REFERENCE Chapter 3 describes the hardware components and principal hardware subsystems of the RCM3200. Appendix A, “RCM3200 Specifications,” provides complete physical and electrical specifications. Figure 4 shows these Rabbit-based subsystems designed into the RCM3200. 32 kHz osc SRAM Flash 22.1 MHz osc RABBIT ® 3000 logic-level serial signal Level converter Ethernet RabbitCore Module RS-232, RS-485, IRDA serial communication drivers on motherboard Figure 4.
4.1 RCM3200 Digital Inputs and Outputs The RCM3200 has 52 parallel I/O lines grouped in seven 8-bit ports available on headers J1 and J2. The 44 bidirectional I/O lines are located on pins PA0–PA7, PB0, PB2–PB7, PD2–PD7, PE0–PE1, PE3–PE7, PF0–PF7, and PG0–PG7. Figure 5 shows the RCM3200 pinouts for headers J1 and J2. J1 GND PA7 PA5 PA3 PA1 PF3 PF1 PC0 PC2 PC4 PC6-TxA PG0 PG2 PD4 PD2 PD6 n.c. J2 STATUS PA6 PA4 PA2 PA0 PF2 PF0 PC1 PC3 PC5 PC7-RxA PG1 PG3 PD5 PD3 PD7 n.c.
Figure 6 shows the use of the Rabbit 3000 microprocessor ports in the RCM3200 modules.
Table 2.
Table 2.
Table 2.
4.1.1 Memory I/O Interface The Rabbit 3000 address lines (A0–A19) and all the data lines (D0–D7) are routed internally to the onboard flash memory and SRAM chips. I/0 write (/IOWR) and I/0 read (/IORD) are available for interfacing to external devices. Parallel Port A can also be used as an external I/O data bus to isolate external I/O from the main data bus. Parallel Port B pins PB2–PB7 can also be used as an auxiliary address bus.
4.2 Serial Communication The RCM3200 board does not have an RS-232 or an RS-485 transceiver directly on the board. However, an RS-232 or RS-485 interface may be incorporated on the board the RCM3200 is mounted on. For example, the Prototyping Board has a standard RS-232 transceiver chip. 4.2.1 Serial Ports There are six serial ports designated as Serial Ports A, B, C, D, E, and F. All six serial ports can operate in an asynchronous mode up to the baud rate of the system clock divided by 8.
Three LEDs are placed next to the RJ-45 Ethernet jack, one to indicate an Ethernet link (LNK), one to indicate Ethernet activity (ACT), and one to indicate when the RCM3200 is connected to a functioning 100Base-T network (SPD). The transformer/connector assembly ground is connected to the RCM3200 printed circuit board digital ground via a ferrite bead, R42, as shown in Figure 8. RJ-45 Ethernet Jack R42 Board Ground Chassis Ground Figure 8.
The status pin is used by Dynamic C to determine whether a Rabbit microprocessor is present. The status output has three different programmable functions: 1. It can be driven low on the first op code fetch cycle. 2. It can be driven low during an interrupt acknowledge cycle. 3. It can also serve as a general-purpose output once a program has been downloaded and is running. The /RESET_IN pin is an external input that is used to reset the Rabbit 3000 and the RCM3200 onboard peripheral circuits.
4.3.1 Changing Between Program Mode and Run Mode The RCM3200 is automatically in Program Mode when the PROG connector on the programming cable is attached, and is automatically in Run Mode when no programming cable is attached. When the Rabbit 3000 is reset, the operating mode is determined by the status of the SMODE pins. When the programming cable’s PROG connector is attached, the SMODE pins are pulled high, placing the Rabbit 3000 in the Program Mode.
4.3.2 Standalone Operation of the RCM3200 The RCM3200 must be programmed via the Prototyping Board or via a similar arrangement on a customer-supplied board. Once the RCM3200 has been programmed successfully, remove the serial programming cable from the programming connector and reset the RCM3200. The RCM3200 may be reset by cycling the power off/on or by pressing the RESET button on the Prototyping Board. The RCM3200 module may now be removed from the Prototyping Board for end-use installation.
4.4 Other Hardware 4.4.1 Clock Doubler The RCM3200 takes advantage of the Rabbit 3000 microprocessor’s internal clock doubler. A built-in clock doubler allows half-frequency crystals to be used to reduce radiated emissions. The 44.2 MHz frequency specified for the RCM3200 and the RCM3220 is generated using a 22.12 MHz resonator, the 29.5 MHz RCM3210 uses a 14.74 MHz resonator. The clock doubler may be disabled if 44.2 MHz clock speeds are not required.
4.5 Memory 4.5.1 SRAM The RCM3200 and the RCM3220 have 512K of program execution SRAM installed at U8. The RCM3200 and RCM3220 data SRAM installed at U6 is 256K, and the RCM3210 has 128K data SRAM installed at U6.. 4.5.2 Flash EPROM The RCM3200 is also designed to accept 256K to 512K of flash EPROM at U7. NOTE: Rabbit Semiconductor recommends that any customer applications should not be constrained by the sector size of the flash EPROM since it may be necessary to change the sector size in the future.
5. SOFTWARE REFERENCE Dynamic C is an integrated development system for writing embedded software. It runs on an IBM-compatible PC and is designed for use with Rabbit Semiconductor controllers and other controllers based on the Rabbit microprocessor. Chapter 4 provides the libraries and function calls related to the RCM3200. 5.1 More About Dynamic C Dynamic C has been in use worldwide since 1989.
Dynamic C has a number of standard features. • Full-feature source and/or assembly-level debugger, no in-circuit emulator required. • Royalty-free TCP/IP stack with source code and most common protocols. • Hundreds of functions in source-code libraries and sample programs: X Exceptionally fast support for floating-point arithmetic and transcendental functions. X RS-232 and RS-485 serial communication. X Analog and digital I/O drivers. X I2C, SPI, GPS, file system. X LCD display and keypad drivers.
5.2 Dynamic C Function Calls 5.2.1 Digital I/O The RCM3200 was designed to interface with other systems, and so there are no drivers written specifically for the I/O. The general Dynamic C read and write functions allow you to customize the parallel I/O to meet your specific needs. For example, use WrPortI(PEDDR, &PEDDRShadow, 0x00); to set all the Port E bits as inputs, or use WrPortI(PEDDR, &PEDDRShadow, 0xFF); to set all the Port E bits as outputs.
5.2.3 Serial Communication Drivers Library files included with Dynamic C provide a full range of serial communications support. The RS232.LIB library provides a set of circular-buffer-based serial functions. The PACKET.LIB library provides packet-based serial functions where packets can be delimited by the 9th bit, by transmission gaps, or with user-defined special characters.
5.2.5.1 Board Initialization void brdInit (void); Call this function at the beginning of your program. This function initializes Parallel Ports A through G for use with the RCM3200 Prototyping Board. Summary of Initialization 1. I/O port pins are configured for Prototyping Board operation. 2. Unused configurable I/O are set as high outputs. 3. Only one RabbitCore module is plugged in, and is in the MASTER position on the Prototyping Board. 3. The LCD/keypad module is disabled. 4. RS-485 is not enabled. 5.
5.3 Upgrading Dynamic C Dynamic C patches that focus on bug fixes are available from time to time. Check the Web site www.rabbit.com/support/ for the latest patches, workarounds, and bug fixes. The default installation of a patch or bug fix is to install the file in a directory (folder) different from that of the original Dynamic C installation.
6. USING THE TCP/IP FEATURES 6.1 TCP/IP Connections Programming and development can be done with the RCM3200 RabbitCore modules without connecting the Ethernet port to a network. However, if you will be running the sample programs that use the Ethernet capability or will be doing Ethernet-enabled development, you should connect the RCM3200 module’s Ethernet port at this time. Before proceeding you will need to have the following items.
The following options require more care in address selection and testing actions, as conflicts with other users, servers and systems can occur: • LAN — Connect the RCM3200’s Ethernet port to an existing LAN, preferably one to which the development PC is already connected. You will need to obtain IP addressing information from your network administrator.
6.2 TCP/IP Primer on IP Addresses Obtaining IP addresses to interact over an existing, operating, network can involve a number of complications, and must usually be done with cooperation from your ISP and/or network systems administrator. For this reason, it is suggested that the user begin instead by using a direct connection between a PC and the RCM3200 board using an Ethernet crossover cable or a simple arrangement with a hub.
Hub(s) T1 in Adapter Ethernet Firewall Proxy Server Network Ethernet Typical Corporate Network RCM3200 Board If your system administrator can give you an Ethernet cable along with its IP address, the netmask and the gateway address, then you may be able to run the sample programs without having to setup a direct connection between your computer and the RCM3200 board.
6.2.1 IP Addresses Explained IP (Internet Protocol) addresses are expressed as 4 decimal numbers separated by periods, for example: 216.103.126.155 10.1.1.6 Each decimal number must be between 0 and 255. The total IP address is a 32-bit number consisting of the 4 bytes expressed as shown above. A local network uses a group of adjacent IP addresses. There are always 2N IP addresses in a local network. The netmask (also called subnet mask) determines how many IP addresses belong to the local network.
6.2.2 How IP Addresses are Used The actual hardware connection via an Ethernet uses Ethernet adapter addresses (also called MAC addresses). These are 48-bit addresses and are unique for every Ethernet adapter manufactured. In order to send a packet to another computer, given the IP address of the other computer, it is first determined if the packet needs to be sent directly to the other computer or to the gateway. In either case, there is an IP address on the local network to which the packet must be sent.
6.2.3 Dynamically Assigned Internet Addresses In many instances, there are no fixed IP addresses. This is the case when, for example, you are assigned an IP address dynamically by your dial-up Internet service provider (ISP) or when you have a device that provides your IP addresses using the Dynamic Host Configuration Protocol (DHCP).
6.3 Placing Your Device on the Network In many corporate settings, users are isolated from the Internet by a firewall and/or a proxy server. These devices attempt to secure the company from unauthorized network traffic, and usually work by disallowing traffic that did not originate from inside the network. If you want users on the Internet to communicate with your RCM3200, you have several options.
6.4 Running TCP/IP Sample Programs We have provided a number of sample programs demonstrating various uses of TCP/IP for networking embedded systems. These programs require you to connect your PC and the RCM3200 board together on the same network. This network can be a local private network (preferred for initial experimentation and debugging), or a connection via the Internet.
6.4.1 How to Set IP Addresses in the Sample Programs With the introduction of Dynamic C 7.30 we have taken steps to make it easier to run many of our sample programs. Instead of the MY_IP_ADDRESS and other macros, you will see a TCPCONFIG macro. This macro tells Dynamic C to select your configuration from a list of default configurations. You will have three choices when you encounter a sample program with the TCPCONFIG macro. 1.
6.4.2 How to Set Up your Computer’s IP Address for Direct Connect When your computer is connected directly to the RCM3200 board via an Ethernet connection, you need to assign an IP address to your computer. To assign the PC the address 10.10.6.101 with the netmask 255.255.255.0, do the following. Click on Start > Settings > Control Panel to bring up the Control Panel, and then double-click the Network icon.
6.5 Run the PINGME.C Sample Program Connect the crossover cable from your computer’s Ethernet port to the RCM3200 board’s RJ-45 Ethernet connector. Open this sample program from the SAMPLES\TCPIP\ICMP folder, compile the program, and start it running under Dynamic C. When the program starts running, the green LNK light on the RCM3200 board should be on to indicate an Ethernet connection is made.
• ENET_MENU.C—This program demonstrates how to implement a menu system using a highlight bar on a graphic LCD display and to communicate it to another single-board computer via Ethernet. Use ENET_AD.C to program the other single-board computer with analog inputs and outputs. • MBOXDEMO.C—Implements a Web server that allows e-mail messages to be entered and then shown on the LCD/keypad module. • SMTP.C—This program allows you to send an E-mail when a switch on the Prototyping Board is pressed.
48 RabbitCore RCM3200
APPENDIX A. RCM3200 SPECIFICATIONS Appendix A provides the specifications for the RCM3200, and describes the conformal coating.
A.1 Electrical and Mechanical Characteristics Figure A-1 shows the mechanical dimensions for the RCM3200. 1.850 (47.0) 1.375 (34.9) R8 C18 C30 C33 C35 Y3 R27 R29 R37 R39 C42 C45 C44 C43 R38 (69.2) R31 R35 2.725 C37 C36 JP5 R28 C39 R25 U5 U6 R40 Q1 R41 R42 C48 C49 L1 C62 L2 C68 R58 C64 C67 R74 C83 R72 R73 DS1 R71 R75 C86 DS2 DS3 GND 0.829 1.021 (21.1) 0.106 (2.7) (6.2) (2.2) (22) (6.2) 0.245 (2.2) J1 (1.6) (47.0) 0.087 1.850 0.063 J2 0.86 (14) 0.55 (69.
It is recommended that you allow for an “exclusion zone” of 0.04" (1 mm) around the RCM3200 in all directions (except above the RJ-45 plug) when the RCM3200 is incorporated into an assembly that includes other printed circuit boards. This “exclusion zone” that you keep free of other components and boards will allow for sufficient air flow, and will help to minimize any electrical or electromagnetic interference between adjacent boards. An “exclusion zone” of 0.
Table A-1 lists the electrical, mechanical, and environmental specifications for the RCM3200. Table A-1. RabbitCore RCM3200 Specifications Feature Microprocessor RCM3200 RCM3210 RCM3220 Rabbit 3000® at 44.2 MHz Rabbit 3000® at 29.5 MHz Rabbit 3000® at 44.
Table A-1. RabbitCore RCM3200 Specifications (continued) Feature RCM3200 Operating Temperature RCM3210 RCM3220 –40°C to +70°C Humidity 5% to 95%, noncondensing Connectors Two 2 × 17, 2 mm pitch Board Size 1.850" × 2.725" × 0.86" (47 mm × 69 mm × 22 mm) A.1.1 Headers The RCM3200 uses headers at J1 and J2 for physical connection to other boards. J1 and J2 are 2 × 17 SMT headers with a 2 mm pin spacing. J3, the programming port, is a 2 × 5 header with a 1.27 mm pin spacing.
A.2 Bus Loading You must pay careful attention to bus loading when designing an interface to the RCM3200. This section provides bus loading information for external devices. Table A-2 lists the capacitance for the various RCM3200 I/O ports. Table A-2. Capacitance of Rabbit 3000 I/O Ports I/O Ports Input Capacitance (pF) Output Capacitance (pF) 12 14 Parallel Ports A to G Table A-3 lists the external capacitive bus loading for the various RCM3200 output ports.
Figure A-4 shows a typical timing diagram for the Rabbit 3000 microprocessor external I/O read and write cycles. External I/O Read (no extra wait states) T1 Tw T2 CLK A[15:0] valid Tadr /CSx /IOCSx TCSx TCSx TIOCSx TIOCSx /IORD TIORD TIORD /BUFEN TBUFEN Tsetup TBUFEN D[7:0] valid Thold External I/O Write (no extra wait states) T1 Tw T2 CLK A[15:0] valid Tadr /CSx /IOCSx /IOWR /BUFEN D[7:0] TCSx TCSx TIOCSx TIOCSx TIOWR TIOWR TBUFEN TBUFEN valid TDHZV TDVHZ Figure A-4.
Table A-4 lists the delays in gross memory access time for VDD = 3.3 V. Table A-4. Data and Clock Delays VDD ±10%, Temp, -40°C–+85°C (maximum) Clock to Address Output Delay (ns) 30 pF 60 pF 90 pF Data Setup Time Delay (ns) 6 8 11 1 VDD 3.3 Spectrum Spreader Delay (ns) Normal Strong dbl/no dbl dbl/no dbl 3/4.5 4.5/9 The measurements are taken at the 50% points under the following conditions. • T = -40°C to 85°C, V = VDD ±10% • Internal clock to nonloaded CLK pin delay ≤ 1 ns @ 85°C/3.
A.3 Rabbit 3000 DC Characteristics Table A-5 outlines the DC characteristics for the Rabbit at 3.3 V over the recommended operating temperature range from Ta = –55°C to +125°C, VDD = 3.0 V to 3.6 V. Table A-5. 3.3 Volt DC Characteristics Symbol Parameter Test Conditions Min IIH Input Leakage High VIN = VDD, VDD = 3.3 V IIL Input Leakage Low (no pull-up) VIN = VSS, VDD = 3.3 V -1 IOZ Output Leakage (no pull-up) VIN = VDD or VSS, VDD = 3.
A.4 I/O Buffer Sourcing and Sinking Limit Unless otherwise specified, the Rabbit I/O buffers are capable of sourcing and sinking 6.8 mA of current per pin at full AC switching speed. Full AC switching assumes a 29.4 MHz CPU clock and capacitive loading on address and data lines of less than 70 pF per pin. The absolute maximum operating voltage on all I/O is 5.5 V. Table A-6 shows the AC and DC output drive limits of the parallel I/O buffers when the Rabbit 3000 is used in the RCM3200. Table A-6.
A.5 Conformal Coating The areas around the 32 kHz real-time clock crystal oscillator has had the Dow Corning silicone-based 1-2620 conformal coating applied. The conformally coated area is shown in Figure A-5. The conformal coating protects these high-impedance circuits from the effects of moisture and contaminants over time.
A.6 Jumper Configurations Figure A-6 shows the header locations used to configure the various RCM3200 options via jumpers. Top Side Bottom Side JP1 JP3 JP4 JP2 JP5 Figure A-6. Location of RCM3200 Configurable Positions Table A-7 lists the configuration options. Table A-7.
APPENDIX B. PROTOTYPING BOARD Appendix B describes the features and accessories of the Prototyping Board, and explains the use of the Prototyping Board to demonstrate the RCM3200 and to build prototypes of your own circuits.
B.1 Introduction The Prototyping Board included in the Development Kit makes it easy to connect an RCM3200 module to a power supply and a PC workstation for development. It also provides some basic I/O peripherals (switches and LEDs), as well as a prototyping area for more advanced hardware development. For the most basic level of evaluation and development, the Prototyping Board can be used without modification.
B.1.1 Prototyping Board Features • Power Connection—A power-supply jack and a 3-pin header are provided for connection to the power supply. Note that the 3-pin header is symmetrical, with both outer pins connected to ground and the center pin connected to the raw V+ input. The cable of the AC adapter provided with the North American version of the Development Kit ends in a plug that connects to the power-supply jack.
• RS-232—Two 3-wire or one 5-wire RS-232 serial port are available on the Prototyping Board. Refer to the Prototyping Board schematic (090-0137) for additional details. A 10-pin 0.1-inch spacing header strip is installed at J5 to permit connection of a ribbon cable leading to a standard DE-9 serial connector. • Current Measurement Option—Jumpers across pins 1–2 and 5–6 on header JP1 can be removed and replaced with an ammeter across the pins to measure the current drawn from the +5 V or the +3.
B.2 Mechanical Dimensions and Layout 5.55 0.20 (141) (5) MOTOR/ENCODER J6 PE5 PC1 PC0 PE6 PE7 PF0 PF1 PF7 PF6 PF2 PF3 PF5 PF4 PA0 PA1 PB7 PB6 PA2 PA3 PB5 PB4 PB3 PB2 PA6 /RES PE4 RN2 J1 PA5 PA7 UX10 RC15 C2 R4 R3 UX11 RCM2 RC24 RC19 RC20 RC23 UX9 R8 R12 R6 RC14 R10 C3 R5 R2 RC22 RC17 RC13 RC16 R7 UX3 RC12 RC21 R9 R11 RC10 R13 R21 +5V +3.3V J15 SLAVE MASTER C1 +5V +3.
Table B-1 lists the electrical, mechanical, and environmental specifications for the Prototyping Board. Table B-1. Prototyping Board Specifications Parameter Specification Board Size 5.30" × 6.775" × 1.00" (135 mm × 172 mm × 25 mm) Operating Temperature –20°C to +60°C Humidity 5% to 95%, noncondensing Input Voltage 8 V to 24 V DC Maximum Current Draw 800 mA max. for +3.3 V supply, (including user-added circuits) 1 A total +3.3 V and +5 V combined Prototyping Area 2.0" × 3.
B.4 Using the Prototyping Board The Prototyping Board is actually both a demonstration board and a prototyping board. As a demonstration board, it can be used to demonstrate the functionality of the RCM3200 right out of the box without any modifications to either board. There are no jumpers or dip switches to configure or misconfigure on the Prototyping Board so that the initial setup is very straightforward.
B.4.1 Adding Other Components There are pads that can be used for surface-mount prototyping involving SOIC devices. There is provision for seven 16-pin devices (six on one side, one on the other side). There are 10 sets of pads that can be used for 3- to 6-pin SOT23 packages. There are also pads that can be used for SMT resistors and capacitors in an 0805 SMT package.
B.4.3 Other Prototyping Board Modules and Options With the RCM3200 plugged into the MASTER slots, it has full access to the RS-232 transceiver, and can act as the “master” relative to another RabbitCore RCM3000, RCM3100, or RCM3200 plugged into the SLAVE slots, which acts as the “slave.” An optional LCD/keypad module is available that can be mounted on the Prototyping Board. Refer to Appendix C, “LCD/Keypad Module,” for complete information.
B.5 Use of Rabbit 3000 Parallel Ports Table B-2 lists the Rabbit 3000 parallel ports and their use for the RCM30/31/32XX Prototyping Board. Table B-2.
Table B-2.
72 RabbitCore RCM3200
APPENDIX C. LCD/KEYPAD MODULE An optional LCD/keypad is available for the Prototyping Board. Appendix C describes the LCD/keypad and provides the software function calls to make full use of the LCD/keypad. C.1 Specifications Two optional LCD/keypad modules—with or without a panel-mounted bezel—are available for use with the Prototyping Board. They are shown in Figure C-1. LCD/Keypad Modules Figure C-1.
Mounting hardware and a 60 cm (24") extension cable are also available for the LCD/keypad module through your sales representative or authorized distributor. Table C-1 lists the electrical, mechanical, and environmental specifications for the LCD/ keypad module. Table C-1. LCD/Keypad Specifications Parameter Specification Board Size 2.60" × 3.00" × 0.75" (66 mm × 76 mm × 19 mm) Bezel Size 4.50" × 3.60" × 0.30" (114 mm × 91 mm × 7.
C.2 Contrast Adjustments for All Boards Starting in 2005, LCD/keypad modules were factory-configured to optimize their contrast based on the voltage of the system they would be used in. Be sure to select a KDU5V LCD/keypad module for use with the RCM3000/3100/3200 Prototyping Board — these modules operate at 5 V. You may adjust the contrast using the potentiometer at R2 as shown in Figure C-3. LCD/keypad modules configured for 3.
C.3 Keypad Labeling The keypad may be labeled according to your needs. A template is provided in Figure C-4 to allow you to design your own keypad label insert. 1.10 (28) 2.35 (60) Figure C-4. Keypad Template To replace the keypad legend, remove the old legend and insert your new legend prepared according to the template in Figure C-4. The keypad legend is located under the blue keypad matte, and is accessible from the left only as shown in Figure C-5.
C.4 Header Pinouts DB6B DB4B DB2B DB0B A1B A3B GND LED7 LED5 LED3 LED1 /RES VCC Figure C-6 shows the pinouts for the LCD/keypad module. J3 GND LED7 LED5 LED3 LED1 /RES VCC GND DB6B DB4B DB2B DB0B A1B A3B DB7B DB5B DB3B DB1B A0B A2B GND GND LED6 LED4 LED2 /CS +5BKLT J1 GND GND LED6 LED4 LED2 PE7 +5BKLT GND DB7B DB5B DB3B DB1B A0B A2B J2 Figure C-6. LCD/Keypad Module Pinouts C.4.
C.5 Mounting LCD/Keypad Module on the Prototyping Board Install the LCD/keypad module on header sockets J7, J8, and J10 of the Prototyping Board as shown in Figure C-7. Be careful to align the pins over the headers, and do not bend them as you press down to mate the LCD/keypad module with the Prototyping Board.
C.6 Bezel-Mount Installation This section describes and illustrates how to bezel-mount the LCD/keypad module. Follow these steps for bezel-mount installation. 1. Cut mounting holes in the mounting panel in accordance with the recommended dimensions in Figure C-8, then use the bezel faceplate to mount the LCD/keypad module onto the panel. 0.125 D, 4x 0.230 (5.8) 2.870 (86.4) 0.130 (3.3) CUTOUT 3.400 (3) (72.9) 3.100 (78.8) Figure C-8. Recommended Cutout Dimensions 2.
3. Fasten the unit with the four 4-40 screws and washers included with the LCD/keypad module. If your panel is thick, use a 4-40 screw that is approximately 3/16" (5 mm) longer than the thickness of the panel. Bezel/Gasket DISPLAY BOARD U1 C1 U2 C4 U3 C3 C2 Q1 R17 D1 J1 R1 R2 R4 R3 R5 R7 R6 R8 R15 R14 R13 R12 R11 R9 R10 Panel R18 Q2 Q3 Q4 Q5 Q6 Q8 Q7 C5 R16 KP1 J3 RN1 U4 C6 C7 C8 J2 Figure C-9.
C.6.1 Connect the LCD/Keypad Module to Your Prototyping Board The LCD/keypad module can be located as far as 2 ft. (60 cm) away from the RCM30/31/ 32XX Prototyping Board, and is connected via a ribbon cable as shown in Figure C-10. C5 D1 C7 JP1 R3 U2 C4 U1 C10 C9 R4 R5 C11 CR1 C13 Pin 1 C12 R7 LCD1 R6 D2 C1 C6 C3 R1 C2 R2 U3 U4 Q1 J5 J1 R25 R8 Q4 Q6 3.3 V 2.8 V n.c.
C.7 LCD/Keypad Module Function Calls When mounted on the Prototyping Board, the LCD/keypad module uses the auxiliary I/O bus on the Rabbit 3000 chip. Remember to add the line #define PORTA_AUX_IO to the beginning of any programs using the auxiliary I/O bus. C.7.1 LCD/Keypad Module Initialization The function used to initialize the LCD/keypad module can be found in the Dynamic C LIB\DISPLAYS\LCD122KEY7.LIB library. void dispInit(); Initializes the LCD/keypad module.
C.7.3 LCD Display The functions used to control the LCD display are contained in the GRAPHIC.LIB library located in the Dynamic C DISPLAYS\GRAPHIC library directory. void glInit(void); Initializes the display devices, clears the screen. RETURN VALUE None.
void glSetContrast(unsigned level); Sets display contrast. NOTE: This function is not used with the LCD/keypad module since the support circuits are not available on the LCD/keypad module. void glFillScreen(char pattern); Fills the LCD display screen with a pattern. PARAMETER The screen will be set to all black if pattern is 0xFF, all white if pattern is 0x00, and vertical stripes for any other pattern. RETURN VALUE None.
void glPlotVPolygon(int n, int *pFirstCoord); Plots the outline of a polygon in the LCD page buffer, and on the LCD if the buffer is unlocked. Any portion of the polygon that is outside the LCD display area will be clipped. If fewer than 3 vertices are specified, the function will return without doing anything. PARAMETERS n is the number of vertices. *pFirstCoord is a pointer to array of vertex coordinates: x1,y1, x2,y2, x3,y3,... RETURN VALUE None.
void glFillVPolygon(int n, int *pFirstCoord); Fills a polygon in the LCD page buffer and on the LCD screen if the buffer is unlocked. Any portion of the polygon that is outside the LCD display area will be clipped. If fewer than 3 vertices are specified, the function will return without doing anything. PARAMETERS n is the number of vertices. *pFirstCoord is a pointer to array of vertex coordinates: x1,y1, x2,y2, x3,y3,... RETURN VALUE None.
void glFillCircle(int xc, int yc, int rad); Draws a filled circle in the LCD page buffer and on the LCD if the buffer is unlocked. Any portion of the circle that is outside the LCD display area will be clipped. PARAMETERS xc is the x coordinate of the center of the circle. yc is the y coordinate of the center of the circle. rad is the radius of the center of the circle (in pixels). RETURN VALUE None.
void glPutFont(int x, int y, fontInfo *pInfo, char code); Puts an entry from the font table to the page buffer and on the LCD if the buffer is unlocked. Each font character's bitmap is column major and byte-aligned. Any portion of the bitmap character that is outside the LCD display area will be clipped. PARAMETERS x is the x coordinate (column) of the top left corner of the text. y is the y coordinate (row) of the top left corner of the text. *pInfo is a pointer to the font descriptor.
void glPutChar(char ch, char *ptr, int *cnt, glPutCharInst *pInst) Provides an interface between the STDIO string-handling functions and the graphic library. The STDIO string-formatting function will call this function, one character at a time, until the entire formatted string has been parsed. Any portion of the bitmap character that is outside the LCD display area will be clipped. PARAMETERS ch is the character to be displayed on the LCD.
void glBuffLock(void); Increments LCD screen locking counter. Graphic calls are recorded in the LCD memory buffer and are not transferred to the LCD if the counter is non-zero. NOTE: glBuffLock() and glBuffUnlock() can be nested up to a level of 255, but be sure to balance the calls. It is not a requirement to use these procedures, but a set of glBuffLock() and glBuffUnlock() bracketing a set of related graphic calls speeds up the rendering significantly. RETURN VALUE None.
int glGetBrushType(void); Gets the current method (or color) of pixels drawn by subsequent graphic calls. RETURN VALUE The current brush type. SEE ALSO glSetBrushType void glPlotDot(int x, int y); Draws a single pixel in the LCD buffer, and on the LCD if the buffer is unlocked. If the coordinates are outside the LCD display area, the dot will not be plotted. PARAMETERS x is the x coordinate of the dot. y is the y coordinate of the dot. RETURN VALUE None.
void glLeft1(int left, int top, int cols, int rows); Scrolls byte-aligned window left one pixel, right column is filled by current pixel type (color). PARAMETERS left is the top left corner of bitmap, must be evenly divisible by 8, otherwise truncates. top is the top left corner of the bitmap. cols is the number of columns in the window, must be evenly divisible by 8, otherwise truncates. rows is the number of rows in the window. RETURN VALUE None.
void glDown1(int left, int top, int cols, int rows); Scrolls byte-aligned window down one pixel, top column is filled by current pixel type (color). PARAMETERS left is the top left corner of bitmap, must be evenly divisible by 8, otherwise truncates. top is the top left corner of the bitmap. cols is the number of columns in the window, must be evenly divisible by 8, otherwise truncates. rows is the number of rows in the window. RETURN VALUE None.
void glVScroll(int left, int top, int cols, int rows, int nPix); Scrolls up or down, within the defined window by x number of pixels. The opposite edge of the scrolled window will be filled in with white pixels. The window must be byte-aligned. Parameters will be verified for the following: 1. The left and cols parameters will be verified that they are evenly divisible by 8. If not, they will be truncated to a value that is a multiple of 8. 2.
void glXPutFastmap(int left, int top, int width, int height, unsigned long bitmap); Draws bitmap in the specified space. The data for the bitmap are stored in xmem. This function is like glXPutBitmap, except that it is faster. The restriction is that the bitmap must be byte-aligned. Any portion of a bitmap image or character that is outside the LCD display area will be clipped. PARAMETERS left is the top left corner of the bitmap, must be evenly divisible by 8, otherwise truncates.
void TextGotoXY(windowFrame *window, int col, int row); Sets the cursor location on the display of where to display the next character. The display location is based on the height and width of the character to be displayed. NOTE: Execute the TextWindowFrame function before using this function. PARAMETERS *window is a pointer to a font descriptor. col is a character column location. row is a character row location. RETURN VALUE None.
void TextPrintf(struct windowFrame *window, char *fmt, ...); Prints a formatted string (much like printf) on the LCD screen. Only printable characters in the font set are printed, also escape sequences, '\r' and '\n' are recognized. All other escape sequences will be skipped over; for example, '\b' and 't' will print if they exist in the font set, but will not have any effect as control characters.
C.7.4 Keypad The functions used to control the keypad are contained in the Dynamic C LIB\KEYPADS\ KEYPAD7.LIB library. void keyInit(void); Initializes keypad process RETURN VALUE None. SEE ALSO brdInit void keyConfig(char cRaw, char cPress, char cRelease, char cCntHold, char cSpdLo, char cCntLo, char cSpdHi); Assigns each key with key press and release codes, and hold and repeat ticks for auto repeat and debouncing. PARAMETERS cRaw is a raw key code index.
cSpdHi is a high-speed repeat tick. How many times to repeat after low speed repeat. 0 = None. RETURN VALUE None. SEE ALSO keyProcess, keyGet, keypadDef void keyProcess(void); Scans and processes keypad data for key assignment, debouncing, press and release, and repeat. NOTE: This function is also able to process an 8 × 8 matrix keypad.
void keypadDef(); Configures the physical layout of the keypad with the desired ASCII return key codes. Keypad physical mapping 1 × 7 0 4 1 ['L'] 5 2 ['U'] ['–'] 6 ['D'] 3 ['R'] ['+'] ['E'] where 'E' represents the ENTER key 'D' represents Down Scroll 'U' represents Up Scroll 'R' represents Right Scroll 'L' represents Left Scroll Example: Do the followingfor the above physical vs. ASCII return key codes.
C.8 Sample Programs Sample programs illustrating the use of the LCD/keypad module with the Prototyping Board are provided in the SAMPLES\RCM3200 directory. These sample programs use the auxiliary I/O bus on the Rabbit 3000 chip, and so the #define PORTA_AUX_IO line is already included in the sample programs. Each sample program has comments that describe the purpose and function of the program. Follow the instructions at the beginning of the sample program.
102 RabbitCore RCM3200
APPENDIX D. POWER SUPPLY Appendix D provides information on the current requirements of the RCM3200, and includes some background on the chip select circuit used in power management. D.1 Power Supplies The RCM3200 requires a regulated 3.3 V ± 0.15 V DC power source. The RabbitCore design presumes that the voltage regulator is on the user board, and that the power is made available to the RCM3200 board through header J2. An RCM3200 with no loading at the outputs operating at 29.4 MHz typically draws 145 mA.
The drain on the battery by the RCM3200 is typically 12 µA when no other power is supplied. If a 165 mA·h battery is used, the battery can last almost 2 years: 165 mA·h ------------------------ = 1.6 years. 12 µA The actual life in your application will depend on the current drawn by components, not on the RCM3200 and the storage capacity of the battery. The RCM3200 does not drain the battery while it is powered up normally.
APPENDIX E. MOTOR CONTROL OPTION The Prototyping Board has a header at J6 for a motor control option. While Rabbit Semiconductor does not support this option at this time, this appendix provides additional information about Parallel Port F on the Rabbit 3000 microprocessor to enable you to use this feature on the Prototyping Board for your needs. E.1 Overview The Parallel Port F connector on the Prototyping Board, J6, gives access to all 8 pins of Parallel Port F, along with +5 V.
E.2 Header J6 The connector is a 2 × 5, 0.1" pitch header suitable for connecting to a IDC receptacle, with the following pin allocations. Table E-1.
E.3 Using Parallel Port F Parallel Port F is a byte-wide port with each bit programmable for data direction and drive. These are simple inputs and outputs controlled and reported in the Port F Data Register. As outputs, the bits of the port are buffered, with the data written to the Port F Data Register transferred to the output pins on a selected timing edge.
Table E-2. Parallel Port F Registers Register Name Port F Data Register Mnemonic PFDR Bits 0:7 Port F Control Register R/W 00111000 (0x38) Value Reset Value R/W xxxxxxxx Description Read Current state of pins Write Port buffer. Value transferred to O/P register on next rising edge of transfer clock.
Table E-2.
E.4 PWM Outputs The Pulse-Width Modulator consists of a 10-bit free-running counter and four width registers. Each PWM output is high for n + 1 counts out of the 1024-clock count cycle, where n is the value held in the width register. The PWM output high time can optionally be spread throughout the cycle to reduce ripple on the externally filtered PWM output. The PWM is clocked by the output of Timer A9.
E.5 PWM Registers There are no default values on reset for any of the PWM registers. Table E-4. PWM Registers PWM LSBs Register PWL0R 10001000 (0x88) PWL1R 10001010 (0x8A) PWL2R 10001100 (0x8C) PWL3R 10001110 (0x8E) Bit(s) 7:6 Address Value Write 5:1 Description The least significant two bits for the Pulse Width Modulator count are stored These bits are ignored. 0 PWM MSB x Bit(s) 7:0 User’s Manual 0 PWM output High for single block.
E.6 Quadrature Decoder The two-channel Quadrature Decoder accepts inputs via Parallel Port F from two external optical incremental encoder modules. Each channel of the Quadrature Decoder accepts an in-phase (I) and a quadrature-phase (Q) signal, and provides 8-bit counters to track shaft rotation and provide interrupts when the count goes through the zero count in either direction.
The Quadrature Decoder generates an interrupt when the counter increments from 0x00 to 0x01 or when the counter decrements from 0x00 to 0xFF. Note that the status bits in the QDCSR are set coincident with the interrupt, and the interrupt (and status bits) are cleared by reading the QDCSR. Table E-5. Quadrature Decoder Registers Register Name Quad Decode Control/Status Register Mnemonic QDCSR Bit 7 (rd-only) Value Address 10010000 (0x90) Description 0 Quadrature Decoder 2 did not increment from 0xFF.
Table E-5. Quadrature Decoder Registers (continued) Register Name Quad Decode Control Register Mnemonic QDCR Bit Value Address Address = 10010001 (0x91) Description 0x Disable Quadrature Decoder 2 inputs. Writing a new value to these bits will not cause Quadrature Decoder 2 to increment or decrement. 10 Quadrature Decoder 2 inputs from Port F bits 3 and 2. 11 Quadrature Decoder 2 inputs from Port F bits 7 and 6. 5:4 xx These bits are ignored. 3:2 0x Disable Quadrature Decoder 1 inputs.
NOTICE TO USERS RABBIT SEMICONDUCTOR PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN LIFE-SUPPORT DEVICES OR SYSTEMS UNLESS A SPECIFIC WRITTEN AGREEMENT SIGNED BY A CORPORATE OFFICER OF DIGI INTERNATIONAL IS ENTERED INTO BETWEEN THE CUSTOMER AND DIGI INTERNATIONAL. No complex software or hardware system is perfect. Bugs are always present in a system of any size, and microprocessor systems are subject to failure due to aging, defects, electrical upsets, and various other causes.
116 RabbitCore RCM3200
INDEX A additional information online documentation .......... 4 other manuals ...................... 4 auxiliary I/O bus ................... 21 software ....................... 31, 82 B battery backup battery life ....................... 104 external battery connections ............................ 103 real-time clock ................ 104 reset generator ................. 104 use of battery-backed SRAM ....................................... 31 board initialization function calls .....................
LCD/keypad module (continued) keypad function calls keyConfig ...................98 keyGet .........................99 keyInit .........................98 keypadDef .................100 keyProcess ..................99 keyScan .....................100 keyUnget .....................99 keypad template .................76 LCD display function calls glBackLight ................83 glBlankScreen .............84 glBlock .......................84 glBuffLock .................90 glBuffUnlock ..............
sample programs (continued) serial communication FLOWCONTROL.C ..... 13 PARITY.C .................... 13 SIMPLE3WIRE.C ........ 13 SIMPLE485MASTER.C 14 SIMPLE485SLAVE.C .. 14 SIMPLE5WIRE.C ........ 13 SWITCHCHAR.C ........ 14 TCP/IP BROWSELED.C .......... 46 DISPLAY_MAC.C ....... 40 ECHOCLIENT.C .......... 46 ECHOSERVER.C ......... 46 ENET_AD.C ................. 46 ENET_MENU.C ........... 47 MBOXDEMO.C ........... 47 PINGLED.C .................. 47 PINGME.C .................... 46 SMTP.C ...................
120 RabbitCore RCM3200
SCHEMATICS 090-0152 RCM3200 Schematic www.rabbit.com/documentation/schemat/090-0152.pdf 090-0137 Prototyping Board Schematic www.rabbit.com/documentation/schemat/090-0137.pdf 090-0156 LCD/Keypad Module Schematic www.rabbit.com/documentation/schemat/090-0156.pdf 090-0128 Programming Cable Schematic www.rabbit.com/documentation/schemat/090-0128.pdf You may use the URL information provided above to access the latest schematics directly.