Page 1
RabbitCore RCM3400 C-Programmable Analog Core Module with 10/100Base-T Reference Design User’s Manual 019–0122 • 070831–M...
Page 2
Rabbit and Dynamic C are registered trademarks of Rabbit Semiconductor Inc. Rabbit 3000 and RabbitCore are trademarks of Rabbit Semiconductor Inc. The latest revision of this manual is available on the Rabbit Semiconductor Web site, www.rabbit.com, for free, unregistered download.
ABLE OF ONTENTS Chapter 1. Introduction 1.1 RCM3400 Features ..........................1 1.2 Advantages of the RCM3400 .......................3 1.3 Development and Evaluation Tools......................4 1.3.1 RCM3400 Development Kit ......................4 1.3.2 Software ............................5 1.3.3 Connectivity Interface Kits ......................5 1.3.4 Online Documentation ........................5 Chapter 2. Getting Started 2.1 Install Dynamic C ..........................7 2.2 Hardware Connections..........................8 2.2.1 Attach Module to Prototyping Board....................8...
Page 4
A.1 Electrical and Mechanical Characteristics ..................58 A.1.1 Headers ............................62 A.2 Bus Loading ............................63 A.3 Rabbit 3000 DC Characteristics ......................66 A.4 I/O Buffer Sourcing and Sinking Limit..................... 67 A.5 Conformal Coating ..........................68 A.6 Jumper Configurations ........................69 Appendix B.
Page 5
C.3 Placing Your Device on the Network ....................100 C.4 Running TCP/IP Sample Programs....................101 C.4.1 How to Set IP Addresses in the Sample Programs..............102 C.4.2 How to Set Up your Computer’s IP Address for Direct Connect ..........103 C.5 Run the PINGME.C Sample Program .....................104 C.6 Running Additional Sample Programs With Direct Connect ............104 C.7 Where Do I Go From Here?......................105 Appendix D.
Throughout this manual, the term RCM3400 refers to the complete series of RCM3400 RabbitCore modules unless other production models are referred to specifically. The RCM3400 has a Rabbit 3000 microprocessor operating at up to 29.4 MHz, static RAM, flash memory, an 8-channel A/D converter, two clocks (main oscillator and time- keeping), and the circuitry necessary for reset and management of battery backup of the Rabbit 3000’s internal real-time clock and the static RAM.
Page 8
• Supports 1.15 Mbps IrDA transceiver There are two RCM3400 production models. Table 1 summarizes their main features. Table 1. RCM3400 Features Feature RCM3400 RCM3410 Microprocessor Rabbit 3000 at 29.4 MHz Flash Memory 512K 256K SRAM 512K 256K A/D Converter...
• Easy C-language program development and debugging • Rabbit Field Utility to download compiled Dynamic C .bin files, 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.
A bag of accessory parts for use on the Prototyping Board. • Rabbit 3000 Processor Easy Reference poster. • Registration card. +5 V Rabbit and Dynamic C are registered trademarks of Rabbit Semiconductor Inc. +3.3 V +3.3 V RCM3400 PROTOTYPING BOARD...
1.3.3 Connectivity Interface Kits Rabbit Semiconductor has available additional interface kits to allow you to provide a wireless interface to the RCM3400 and to use the RCM3400 with header sockets that have a 0.1"...
One icon is for Dynamic C, one opens the documentation menu, and the third is for the Rabbit Field Utility, a tool used to download precompiled software to a target system. If you have purchased any of the optional Dynamic C modules, install them after installing Dynamic C.
2.2.1 Attach Module to Prototyping Board Turn the RCM3400 module so that the Rabbit 3000 chip is facing up and the Rabbit logo is facing the direction shown in Figure 2 below. Align the pins from headers J1 and J2 on the bottom side of the module into header sockets RCM1JA and RCM1JB on the Prototyping Board.
Development Kit—the programming cable has blue shrink wrap around the RS-232 converter section located in the middle of the cable. Programming cables with clear or red shrink wrap from other Rabbit Semiconductor kits are not designed to work with RCM3400 modules.
The red and black wires from the connector can then be connected to the positive and negative connections on your power supply. The power supply should deliver 8 V–24 V DC at 8 W. RabbitCore RCM3400...
2.3.1 Troubleshooting If you receive the message No Rabbit Processor Detected, the programming cable may be connected to the wrong COM port, a connection may be faulty, or the target system may not be powered up. First, check to see that the power LED on the Prototyping Board is lit and that the jumper across pins 5–6 of header JP10 on the Prototyping Board is...
Dynamic C TCP/IP User’s Manual, also in the online documentation set. 2.4.1 Technical Support NOTE: If you purchased your RCM3400 through a distributor or through a Rabbit Semi- conductor partner, contact the distributor or partner first for technical support. If there are any problems at this point: •...
AMPLE ROGRAMS To develop and debug programs for the RCM3400 (and for all other Rabbit Semiconductor hardware), you must install and use Dynamic C. This chapter provides a tour of its major features with respect to the RCM3400. 3.1 Introduction To help familiarize you with the RCM3400 modules, Dynamic C includes several sample programs.
Press “1” or “2” on your keyboard to select LED DS1 or DS2 on the Prototyping Board. Then follow the prompt in the Dynamic C window to turn the LED ON STDIO or OFF. A logic low will light up the LED you selected. RabbitCore RCM3400...
IR_DEMO.c Board assemblies via the IrDA transceivers with the IrDA transceivers facing each other. Note that this sample program requires a second Prototyping Board or Rabbit Semicon- ductor single-board computer that has an IrDA chip and is running the IR_DEMO.C sample program associated with it.
Page 22
S3 on the Prototyping Board. The data sent between the serial ports will be dis- played in the STDIO window. Two sample programs, , are available to SIMPLE485MASTER.C SIMPLE485SLAVE.C illustrate RS-485 master/slave communication. To run these sample programs, you will need a second Rabbit-based system with RS-485. RabbitCore RCM3400...
The RS-485 connections between the slave and master devices are as follows. • RS485+ to RS485+ • RS485– to RS485– • GND to GND —This program demonstrates a simple RS-485 transmission of • SIMPLE485MASTER.C lower case letters to a slave. The slave will send back converted upper case letters back to the master RCM3400 and display them in the STDIO window.
3.2.4 TCP/IP Sample Programs Sample programs demonstrating the TCP/IP associated with the Prototyping Board are described in Appendix C. 3.2.5 LCD/Keypad Module Sample Programs Sample programs for the optional LCD/keypad module are described in Appendix D. RabbitCore RCM3400...
EFERENCE Chapter 4 describes the hardware components and principal hardware subsystems of the RCM3400. Appendix A, “RCM3400 Specifica- tions,” provides complete physical and electrical specifications. Figure 4 shows the Rabbit-based subsystems designed into the RCM3400. External A/D Converter scaling circuitry...
/IOWR /RESET_IN /RES VBAT_EXT SMODE0 n.c. = not connected These pinouts are as seen on of the module. Figure 5. RCM3400 Pinouts standard 2 × 34 headers with a nominal 1.27 mm pitch. Headers J1 and J2 are RabbitCore RCM3400...
Page 27
Figure 6 shows the use of the Rabbit 3000 microprocessor ports in the RCM3400 modules. PA0PA7 PB1PB7 PD4PD7 Port A Port D Port B PC0, PC2 PE0PE2 Port C Port E PE4PE7 (Serial Ports C & D) PC1, PC3 PG2, PG6 Port G PF0PF1...
Page 29
Table 2. RCM3400 Pinout Configurations (continued) Pin Name Default Use Alternate Use Notes +3.3 V_IN Input/Output Serial Port E Input/Output Input/Output RCLKE Serial Clock E input Input/Output TCLKE Serial Clock E output /IORD Input External read strobe STATUS Output (Status) Output (SMODE1, SMODE0) (0,0)—start executing at address zero...
Page 30
Serial Port D Input Serial Port C Output Programming port Input Serial Port D Input Programming port Input/Output Serial Port F Input/Output Input/Output RCLKF Serial Clock F input Input/Output TCLKF Serial Clock F output Input/Output Input/Output ATXB Input/Output ARXB RabbitCore RCM3400...
Page 31
Table 2. RCM3400 Pinout Configurations (continued) Pin Name Default Use Alternate Use Notes Input/Output ATXA /RESET_IN Input Input to Reset Generator Input/Output ARXA VBAT_EXT User’s Manual...
4.1.1 Memory I/O Interface The Rabbit 3000 address lines (A0–A19) and all the data lines (D0–D7) are routed inter- nally to the onboard flash memory and SRAM chips. I/0 write (/IOWR) and I/0 read (/IORD) are available for interfacing to external devices.
The RCM3400 serial programming port is accessed via the 10-pin header labeled J2 on the Prototyping Board or over an Ethernet connection via the RabbitLink EG2110. The programming port uses the Rabbit 3000’s Serial Port A for communication. Dynamic C uses the programming port to download and debug programs.
Page 34
3. It can also serve as a general-purpose output. The /RESET_IN pin is an external input that is used to reset the Rabbit 3000 and the RCM3400 onboard peripheral circuits. The serial programming port can be used to force a hard reset on the RCM3400 by asserting the /RESET_IN signal.
PROG gramming 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 connector is attached, PROG the SMODE pins are pulled high, placing the Rabbit 3000 in the Program Mode.
RCM3400 is in the program mode. Refer to the for more information on the pro- Rabbit 3000 Microprocessor User’s Manual gramming port and the programming cable. 4.3.2 Standalone Operation of the RCM3400 The RCM3400 must be programmed via the RCM3400 Prototyping Board or via a similar arrangement on a customer-supplied board.
RCM3400 module is mounted. The A/D converter multiplexes converted signals from eight single-ended or four differential inputs to Serial Port B on the Rabbit 3000. The eight analog input pins, LN0–LN7, each have an input impedance of 6–7 MΩ, depending on whether they are used as single-ended or differential inputs.
Page 38
Figure 10 shows the timing of a conversion start. The double falling arrow on CCLK indicates the actual start of the conversion cycle. Conversion starts CCLK BUSY CONV Figure 10. Timing Diagram for Conversion Start Using CONVERT Pin Appendix B explains the implementation examples of these features on the Prototyping Board. RabbitCore RCM3400...
4.4.1 A/D Converter Calibration All single-ended inputs are factory-calibrated with actual voltages at a gain code of 0. Typical values for the other gain codes and for other calibration constants for current and differential measurements are used to populate the table to allow A/D conversions to be done “out of the box.”...
4.5.2 Spectrum Spreader The Rabbit 3000 features a spectrum spreader, which helps to mitigate EMI problems. The spectrum spreader is on by default, but it may also be turned off or set to a stronger setting. The means for doing so is through a simple configuration macro as shown below.
4.6.2 Flash EPROM RCM3400 boards also have 256K–512K of flash EPROM installed at U4. 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.
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 5 provides the libraries, function calls, and sample programs related to the RCM3400.
Page 44
LCD display and keypad drivers. • Powerful language extensions for cooperative or preemptive multitasking • Loader utility program to load binary images into Rabbit Semiconductor targets in the absence of Dynamic C. • Provision for customers to create their own source code libraries and augment on-line help by creating “function description”...
Port E bits as inputs, or use WrPortI(PEDDR, &PEDDRShadow, 0xFF); to set all the Port E bits as outputs. When using the auxiliary I/O bus on the Rabbit 3000 chip, add the line #define PORTA_AUX_IO // required to enable auxiliary I/O bus to the beginning of any programs using the auxiliary I/O bus.
RCM34xx.LIB LIB\RCM3400 you need to modify it for your own board design. Other generic functions applicable to all devices based on Rabbit microprocessors are described in the Dynamic C Function Reference Manual. 5.2.5 Board Initialization void brdInit (void);...
5.2.6 Analog Inputs unsigned int anaInConfig(unsigned int instructionbyte, unsigned int cmd, long baud); Use this function to configure the A/D converter. This function will address the A/D converter in Register Mode only, and will return an error if you try the Direct Mode. Appendix B.4.3 provides additional addressing and command information.
Page 48
9600 to 57,600 bps. baud must be set the first time this function is called. Enter 0 for this parameter thereafter, for example, anaInConfig(0x00, 0x00, 9600); // resets device and sets baud RETURN VALUE 0 on write operations, data value on read operations SEE ALSO anaInDriver, anaIn, brdInit RabbitCore RCM3400...
Page 49
unsigned int anaInDriver(unsigned int cmd, unsigned int len); Reads the voltage of an analog input channel by serial-clocking an 8-bit command to the A/D converter by its Direct Mode method. This function assumes that Mode1 (most significant byte first) and the A/D converter oscillator have been enabled.
Page 50
RETURN VALUE A value corresponding to the voltage on the analog input channel: 0–2047 for 11-bit conversions (bit 12 for sign) -1 overflow or out of range -2 conversion incomplete, busy bit timeout SEE ALSO anaInConfig, anaIn, brdInit RabbitCore RCM3400...
Page 51
unsigned int anaIn(unsigned int channel, int opmode, int gaincode); Reads the value of an analog input channel using the direct method of addressing the A/D converter. Note that it takes about 1 second to ensure an internal capacitor on the A/D converter is charged when the function is called the first time.
Page 52
* Not accessible on Prototyping Board. gaincode is the gain code of 0 to 7: Voltage Range Gain Code Multiplier ×1 0–20 ×2 0–10 ×4 0–5 ×5 0–4 ×8 0–2.5 ×10 0–2 ×16 0–1.25 ×20 0–1 * Applies to Prototyping Board. RabbitCore RCM3400...
Page 53
value1 is the first A/D converter channel raw count value volts1 is the voltage or current corresponding to the first A/D converter channel value (0 to +20 V or 4 to 20 mA) value2 is the second A/D converter channel raw count value volts2 is the voltage or current corresponding to the first A/D converter channel value (0 to +20 V or 4 to 20 mA) RETURN VALUE...
Page 54
A voltage value corresponding to the voltage on the analog input channel. ADOVERFLOW (defined macro = -4096) if overflow or out of range. ADTIMEOUT (defined macro = -4095) if conversion is incomplete or busy-bit timeout. SEE ALSO anaInCalib, anaIn, anaInmAmps, brdInit RabbitCore RCM3400...
Page 55
float anaInDiff(unsigned int channel, unsigned int gaincode); Reads the state of differential analog input channels and uses the previously set calibration constants to convert it to volts. PARAMETERS channel is the analog input channel number (0 to 7) corresponding to ADC_IN0 to ADC_IN7 Voltage Range channel DIFF...
Page 56
A current value between 4.00 and 20.00 mA corresponding to the current on the analog input channel. ADOVERFLOW (defined macro = -4096) if overflow or out of range. ADTIMEOUT (defined macro = -4095) if conversion is incomplete or busy-bit timeout. SEE ALSO anaInCalib, anaIn, anaInVolts RabbitCore RCM3400...
Page 57
root int anaInEERd(unsigned int channel, unsigned int opmode, unsigned int gaincode); Reads the calibration constants, gain, and offset for an input based on their designated position in the simulated EEPROM area of the flash memory, and places them into global tables _adcCalibS, _adcCalibD, and _adcCalibM for analog inputs.
Page 58
0 to 7. The gaincode parameter is ignored when channel is ALLCHAN. Voltage Range Gain Code 0–20 0–10 0–5 0–4 0–2.5 0–2 0–1.25 0–1 * Applies to Prototyping Board. RETURN VALUE 0 if successful. -1 if address is invalid or out of range. SEE ALSO anaInEEWr, anaInCalib RabbitCore RCM3400...
Page 59
int anaInEEWr(unsigned int channel, int opmode unsigned int gaincode); Writes the calibration constants, gain, and offset for an input based from global tables _adcCalibS, _adcCalibD, and _adcCalibM to designated positions in the simulated EEPROM area of the flash memory. The constants are stored in the top 2K of the user block in a reserved memory area. Depending on the flash size, the following macros can be used to identify the starting address for these locations.
Page 60
0 to 7. The gaincode parameter is ignored when channel is ALLCHAN. Voltage Range Gain Code 0–20 0–10 0–5 0–4 0–2.5 0–2 0–1.25 0–1 * Applies to Prototyping Board. RETURN VALUE 0 if successful -1 if address is invalid or out of range. SEE ALSO anaInEEWr, anaInCalib RabbitCore RCM3400...
Dynamic C is a complete software development system, but does not include all the Dynamic C features. Rabbit Semicon- ductor also offers add-on Dynamic C modules containing the popular µC/OS-II real-time operating system, as well as PPP, Advanced Encryption Standard (AES), and other select libraries.
A.1 Electrical and Mechanical Characteristics Figure A-1 shows the mechanical dimensions for the RCM3400. 1.160 (29.5) 1.375 (34.9) 1.160 (29.5) Figure A-1. RCM3400 Dimensions RabbitCore RCM3400...
Page 65
It is recommended that you allow for an “exclusion zone” of 0.04" (1 mm) around the RCM3400 in all directions when the RCM3400 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.
Page 66
A slave port allows the RCM3400 to be used as an intelligent Slave Interface peripheral device slaved to a master processor, which may either be another Rabbit 3000 or any other type of processor Real-Time Clock Ten 8-bit timers (6 cascadable), one 10-bit timer with 2 match...
Page 67
Table A-1. RabbitCore RCM3400 Specifications (continued) Parameter RCM3400 RCM3410 2-channel input capture can be used to time input signals from various Input Capture port pins 2-channel quadrature decoder accepts inputs from external Quadrature Decoder incremental encoder modules 3.0–3.45 V DC @ 29.4 MHz, 2.8–3.45 V DC @ 14.7 MHz Power 97 mA @ 3.3 V, 29.4 MHz;...
Figure A-3 shows the layout of another board for the RCM3400 to be plugged into. These values are relative to the designated fiducial. RCM3400 Footprint 0.900 (22.9) 0.163 0.046 (4.1) (1.2) 1.193 (30.3) Figure A-3. User Board Footprint for RCM3400 RabbitCore RCM3400...
You must pay careful attention to bus loading when designing an interface to the RCM3400. This section provides bus loading information for external devices. Table A-2 lists the capacitance for the various RCM3400 I/O ports. Table A-2. Capacitance of Rabbit 3000 I/O Ports Input Output...
Page 70
Figure A-4 shows a typical timing diagram for the Rabbit 3000 microprocessor external I/O read and write cycles. A[15:0] valid T adr /CSx T CSx T CSx /IOCSx T IOCSx T IOCSx /IORD T IORD T IORD /BUFEN T BUFEN...
Page 71
The maxi- mum shortening for a pair of clocks combined is shown in the table. Technical Note TN227, Interfacing External I/O with Rabbit 2000/3000 Designs, con- tains suggestions for interfacing I/O devices to the Rabbit 3000 microprocessors.
Stresses beyond those listed in Table A-6 may cause permanent damage. The ratings are stress ratings only, and functional operation of the Rabbit 3000 chip at these or any other conditions beyond those indicated in this section is not implied. Exposure to the absolute maximum rating conditions for extended periods may affect the reliability of the Rabbit 3000 chip.
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.
A new conformal coating should then be applied to offer continuing protection against the effects of moisture and contaminants. NOTE: For more information on conformal coatings, refer to Technical Note 303, Con- formal Coatings. RabbitCore RCM3400...
B. P PPENDIX ROTOTYPING OARD Appendix B describes the features and accessories of the Proto- typing Board, and explains the use of the Prototyping Board to demonstrate the RCM3400 and to build prototypes of your own circuits. The RCM3400 Prototyping Board has power-supply connections and also provides some basic I/O peripherals (RS-232, RS-485, A/D converter screw-terminal header, IrDA transceiver, LEDs, and switches), as well as a prototyping area...
+5 V +3.3 V +3.3 V RCM3400 PROTOTYPING BOARD +5 V +5 V GND AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 THERM GND CNVRT VREF LCD/Keypad User Analog Module LEDs Inputs Connections User Switches Figure B-1. Prototyping Board RabbitCore RCM3400...
B.1.1 Prototyping Board Features —A power-supply jack and a 3-pin header are provided for con- Power Connection • nection 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 is terminated with a 5.5 mm plug that connects to the power-supply jack.
Page 80
• be removed and replaced with an ammeter across the pins to measure the current drawn from the +5 V or the +3.3 V supplies, respectively. —Rabbit Semiconductor’s LCD/keypad module may be plugged • LCD/Keypad Module in directly to headers LCD1JA, LCD1JB, and LCD1JC. Appendix D provides complete information for mounting and using the LCD/keypad module.
B.2 Mechanical Dimensions and Layout Figure B-2 shows the mechanical dimensions and layout for the RCM3400 Prototyping Board. 3.75 (95) 3.07 (78) Battery DCIN +3.3 V +5 V +5 V /IORD CX10 /IOWR STAT CX11 SMODE1 SMD0 RESET +5 V +3.3 V GND GND LCD1JA...
The Prototyping Board itself is protected against reverse polarity by a Shottky diode at D2 as shown in Figure B-3. LINEAR POWER REGULATOR SWITCHING POWER REGULATOR +5 V +3.3 V J8/J9 LM1117 DCIN +RAW DL4003 10 µF 10 µF 47 µF 330 µH LM2575 1N5819 Figure B-3. Prototyping Board Power Supply RabbitCore RCM3400...
(S2 and S3) are connected to PD4 and PD5 to demonstrate the interface to the Rabbit 3000 microprocessor. Reset switch S1 is the hardware reset for the RCM3400. The Prototyping Board provides the user with RCM3400 connection points brought out con- veniently to labeled points at header J1 and J3 on the Prototyping Board.
Page 84
Selected signals from the Rabbit 3000 microprocessor are available on header J1 of the Prototyping Board. The remaining ports on the Rabbit 3000 microprocessor are used for RS-232, RS-485, and Ethernet serial communication. Table B-2 lists the signals on header J1 and explains how they are used on the Prototyping Board.
There is a 2" × 4" through-hole prototyping space available on the Prototyping Board. The holes in the prototyping area are spaced at 0.1" (2.5 mm). +3.3 V, +5 V, and GND traces run along the edge of the Prototyping Board for easy access. Small to medium circuits can be prototyped using point-to-point wiring with 20 to 30 AWG wire between the prototyping area, the +3.3 V, +5 V, and GND traces, and the surrounding area where surface-mount components may be installed.
Prototyping Board is to measure only positive voltages for the ranges listed in Table B-3. Table B-3. Positive A/D Converter Input Voltage Ranges Amplifier Min. Voltage Max. Voltage mV per Tick Gain +20.0 +10.0 +5.0 +4.0 +2.5 1.25 +2.0 +1.25 0.625 +1.0 0.500 RabbitCore RCM3400...
Page 87
Adjacent input channels are paired so that moving a particular jumper changes both of the paired channels. At the present time Rabbit Semiconductor does not offer the soft- ware drivers to work with single-ended negative voltages, but the differential mode described below may be used to measure negative voltages.
@ 25°C = 3 kΩ and β 25/85 = 3965. Be sure included with the Development Kit with R and β values for your thermistor if you use another thermistor. to use the applicable R BVREF 1 kW THERM_IN7 ANALOG_GND Figure B-7. Prototyping Board Thermistor Input RabbitCore RCM3400...
B.4.3.3 A/D Converter Calibration All single-ended inputs are factory-calibrated with actual voltages at a gain code of 0. Typical values for the other gain codes and for other calibration constants for current and differential measurements are used to populate the table to allow A/D conversions to be done “out of the box.”...
Serial Port E is configured in hardware for RS-232 or RS-485 via jumpers on headers JP4 and JP8 as shown in Section B.5. Serial Port F is configured in hardware for the IrDA transceiver or RS-232 via jumpers on headers JP6 and JP7 as shown in Section B.5. RabbitCore RCM3400...
Page 91
RS-232 serial communication protocol. Basically, the chip translates the Rabbit 3000’s signals to RS-232 signal levels. Note that the polarity is reversed in an RS-232 circuit so that a +5 V output becomes approximately -10 V and 0 V is output as +10 V.
Page 92
Rabbit 3000 Serial Port E through an RS-485 transceiver. The half-duplex communi- cation uses an output from PD0 on the Rabbit 3000 to control the transmit enable on the communication line. Using this scheme a strict master/slave relationship must exist between devices to insure that no two devices attempt to drive the bus simultaneously.
Page 93
The RCM3400 Prototyping Board comes with a 220 Ω termination resistor and two 681 Ω bias resistors installed and enabled with jumpers across pins 1–2 and 5–6 on header JP3, as shown in Figure B-9. Battery DCIN +3.3 V +5 V +5 V /IORD CX10...
The factory default is for the 0 Ω resistor “jumper” at R46 to be installed. In high-noise environments, remove R46 and ground the transformer/connector assembly directly to ground by soldering a wire between the RJ-45 transformer/connector assembly and ground. This will be especially helpful to minimize ESD and/or EMI problems. RabbitCore RCM3400...
B.4.5 Other Prototyping Board Modules An optional LCD/keypad module is available that can be mounted on the RCM3400 Prototyping Board. Refer to Appendix D, “LCD/Keypad Module,” for complete information. User’s Manual...
Table B-6 lists the configuration options using either jumpers or 0 Ω surface-mount resistors. Table B-6. RCM3400 Prototyping Board Jumper Configurations Factory Header Description Pins Connected Default 1–2 Tied to VREF ADC_IN0–ADC_IN1 × 2–3 Tied to analog ground 1–2 Tied to VREF ADC_IN2–ADC_IN3 × 2–3 Tied to analog ground RabbitCore RCM3400...
Page 97
Table B-6. RCM3400 Prototyping Board Jumper Configurations (continued) Factory Header Description Pins Connected Default 1–2 Connect for 4–20 mA option on ADC_IN3 n.c. 3–4 Connect for 4–20 mA option on ADC_IN4 n.c. Analog Voltage/4–20 mA Options 5–6 Connect for 4–20 mA option on ADC_IN5 n.c.
• Two RJ-45 straight through Ethernet cables and a hub, or an RJ-45 crossover Ethernet cable. The Ethernet cables and a 10Base-T Ethernet hub are available from Rabbit Semiconduc- tor in a TCP/IP tool kit. More information is available at www.rabbit.com.
Page 100
The PC running Dynamic C through the serial port on the RCM3400 Prototyping Board does not need to be the PC with the Ethernet card. 3. Apply Power Plug in the AC adapter. The RCM3400 module and Prototyping Board are now ready to be used. RabbitCore RCM3400...
C.2 TCP/IP Primer on IP Addresses Obtaining IP addresses to interact over an existing, operating, network can involve a num- ber 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 RCM3400 using an Ethernet crossover cable or a simple arrangement with a hub.
Page 102
RCM3400. You will also need the IP address of the nameserver, the name or IP address of your mail server, and your domain name for some of the sample programs. RabbitCore RCM3400...
C.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 adja- cent IP addresses.
0090C2 followed by a code that is unique to each RCM3400 module. For exam- ple, a MAC address might be 0090C2C002C0. TIP: You can always obtain the MAC address on your board by running the sample pro- gram DISPLAY_MAC.C from the SAMPLES\TCPIP folder. RabbitCore RCM3400...
C.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 Configu- ration Protocol (DHCP).
You can either place the RCM3400 directly on the Internet with a real Internet address or place it behind the firewall. If you place the RCM3400 behind the fire- wall, you need to configure the firewall to translate and forward packets from the Internet to the RCM3400. RabbitCore RCM3400...
C.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 RCM3400 board together on the same network. This network can be a local private net- work (preferred for initial experimentation and debugging), or a connection via the Internet.
// #define MY_NAMESERVER "10.10.6.1" In this case, the gateway and nameserver are not used, and are commented out. The IP address of the board is defined to be . The IP address of your PC can be defined 10.1.1.2 10.1.1.1 RabbitCore RCM3400...
C.4.2 How to Set Up your Computer’s IP Address for Direct Connect When your computer is connected directly to the RCM3400 Prototyping Board via an Ethernet connection, you need to assign an IP address to your computer. To assign the PC the address with the netmask , do the following.
LEDs DS1 and DS2 on the Prototyping Board when a ping is sent and received. —This program allows you to send an E-mail when a switch on the Prototyp- • SMTP.C ing Board is pressed. Follow the instructions included with the sample program. RabbitCore RCM3400...
C.7 Where Do I Go From Here? NOTE: If you purchased your RCM3400 through a distributor or through a Rabbit Semi- conductor partner, contact the distributor or partner first for technical support. If there are any problems at this point: •...
LCD/keypad module on the Prototyping Board. Either version of the LCD/keypad module can be installed at a remote location up to 60 cm (24") away. Contact your sales representa- tive or your authorized Rabbit Semiconductor distributor for further assistance in purchasing an LCD/keypad module.
Page 114
NOTE: All measurements are in inches followed by millimeters enclosed in parentheses. All dimen- sions have a manufacturing toler- ance of ±0.01" (0.25 mm). 0.200 0.500 (5.1) (12.7) 1.450 (36.8) 2.200 (55.9) Figure D-2. Mother Board Footprint for LCD/Keypad Module RabbitCore RCM3400...
D.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 KDU3V LCD/keypad module for use with the RCM3400 Prototyping Board — these modules operate at 3.3 V.
Figure D-5. Keypad label is located under the blue keypad matte. Figure D-5. Removing and Inserting Keypad Label The sample program in the folder in KEYBASIC.C 122x32_1x7 SAMPLES\LCD_KEYPAD shows how to reconfigure the keypad for different applications. RabbitCore RCM3400...
D.4 Header Pinouts Figure D-6 shows the pinouts for the LCD/keypad module. Figure D-6. LCD/Keypad Module Pinouts D.4.1 I/O Address Assignments The LCD and keypad on the LCD/keypad module are addressed by the /CS strobe as explained in Table D-2. Table D-2.
D.6 Bezel-Mount Installation This section describes and illustrates how to bezel-mount the LCD/keypad module designed for remote installation. Follow these steps for bezel-mount installation. 1. Cut mounting holes in the mounting panel in accordance with the recommended dimen- sions in Figure D-8, then use the bezel faceplate to mount the LCD/keypad module onto the panel.
Page 120
Do not tighten each screw fully before moving on to the next screw. Apply only one or two turns to each screw in sequence until all are tightened manually as far as they can be so that the gasket is compressed and the plastic bezel faceplate is touching the panel. RabbitCore RCM3400...
Note the locations and connections relative to pin 1 on both the RCM3400 Prototyping Board and the LCD/keypad module. Rabbit Semiconductor offers 2 ft. (60 cm) extension cables. Contact your authorized Rabbit Semiconductor distributor or a sales representative for more information.
Board are provided in the directory. SAMPLES\RCM3400\LCD_KEYPAD These sample programs use the auxiliary I/O bus on the Rabbit 3000 chip, and so the line is already included in the sample programs. #define PORTA_AUX_IO Each sample program has comments that describe the purpose and function of the pro- gram.
D.8 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.
Sets the LCD screen on or off. Data will not be cleared from the screen. PARAMETER onOff turns the LCD screen on or off 1—turn the LCD screen on 0—turn the LCD screen off RETURN VALUE None. SEE ALSO glInit, glSetContrast, glBackLight RabbitCore RCM3400...
Page 125
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.
Page 126
(must be evenly divisible by 8). height is the height of the block. RETURN VALUE None. SEE ALSO glFillScreen, glBlankScreen, glBlock RabbitCore RCM3400...
Page 127
void glBlock(int left, int top, int width, int height); Draws a rectangular block in the page buffer and on the LCD if the buffer is unlocked. Any portion of the block that is outside the LCD display area will be clipped. PARAMETERS left is the x coordinate of the top left corner of the block.
Page 128
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. SEE ALSO glFillPolygon, glPlotPolygon, glPlotVPolygon RabbitCore RCM3400...
Page 129
void glFillPolygon(int n, int x1, int y1, int x2, int y2, ...); Fills 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.
Page 130
Returns the xmem address of the character from the specified font set. PARAMETERS *pInfo is the xmem address of the bitmap font set. letter is an ASCII character. RETURN VALUE xmem address of bitmap character font, column major and byte-aligned. SEE ALSO glPutFont, glPrintf RabbitCore RCM3400...
Page 131
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.
Page 132
(row) of the upper left corner of the text. pInfo is a pointer to the font descriptor. *fmt is a formatted string..are formatted string conversion parameter(s). EXAMPLE glprintf(0,0, &fi12x16, "Test %d\n", count); RETURN VALUE None. SEE ALSO glXFontInit RabbitCore RCM3400...
Page 133
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: can be nested up to a level of 255, but be glBuffLock() glBuffUnlock() sure to balance the calls.
Page 134
(must be evenly divisible by 8). height is the height of the bitmap. xmemptr is the xmem RAM storage address of the bitmap. RETURN VALUE None. SEE ALSO glXPutBitmap, glPrintf RabbitCore RCM3400...
Page 135
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.
Page 136
8, otherwise truncates. rows is the number of rows in the window. RETURN VALUE None. SEE ALSO glVScroll, glUp1 RabbitCore RCM3400...
Page 137
void glHScroll(int left, int top, int cols, int rows, int nPix); Scrolls right or left, 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.
Page 138
RETURN VALUE None. SEE ALSO glXPutFastmap, glPrintf RabbitCore RCM3400...
Page 139
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.
Page 140
This adjustment will only occur once after the TextBorderInit function executes. NOTE: Execute the function before using this function. TextWindowFrame PARAMETERS wPtr is a pointer to the window frame descriptor. RETURN VALUE None. SEE ALSO TextBorderInit, TextGotoXY, TextPutChar, TextWindowFrame, TextCursorLocation RabbitCore RCM3400...
Page 141
void TextGotoXY(windowFrame *window, int col, int row); Sets the cursor location to display the next character. The display location is based on the height and width of the character to be displayed. NOTE: Execute the function before using this function. TextWindowFrame PARAMETERS window is a pointer to a font descriptor.
Page 142
TextWindowFrame PARAMETERS window is a pointer to a font descriptor. *fmt is a formatted string..are formatted string conversion parameter(s). EXAMPLE TextPrintf(&TextWindow, "Test %d\n", count); RETURN VALUE None. SEE ALSO TextGotoXY, TextPutChar, TextWindowFrame, TextCursorLocation RabbitCore RCM3400...
Page 143
int TextMaxChars(windowFrame *wPtr); This function returns the maximum number of characters that can be displayed within the text window. NOTE: Execute the function before using this function. TextWindowFrame PARAMETERS wPtr is a pointer to the window frame descriptor. RETURN VALUE The maximum number of characters that can be displayed within the text window.
5 µs. How many times to repeat. 0 = None. cCntLo is a low-speed hold tick, which is approximately one debounce period or 5 µs. How long to hold before going to high-speed repeat. 0 = Slow Only. RabbitCore RCM3400...
Page 145
cSpdHi is a high-speed repeat tick, which is approximately one debounce period or 5 µs. 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 ×...
Page 146
Writes "1" to each row and reads the value. The position of a keypress is indicated by a zero value in a bit position. PARAMETER pcKeys is a pointer to the address of the value read. RETURN VALUE None. SEE ALSO keyConfig, keyGet, keypadDef, keyProcess RabbitCore RCM3400...
The RCM3400 does not have a battery, but there is provision for a customer-supplied bat- tery to back up the data SRAM and keep the internal Rabbit 3000 real-time clock running. Header J2, shown in Figure E-1, allows access to the external battery. This header makes it possible to connect an external 3 V power supply.
E.1.2 Reset Generator The RCM3400 uses a reset generator to reset the Rabbit 3000 microprocessor when the volt- age drops below the voltage necessary for reliable operation. The reset occurs between 2.85 V and 3.00 V, typically 2.93 V. The RCM3400 has a reset output, pin 33 on header J1.
Need help?
Do you have a question about the RabbitCore RCM3400 and is the answer not in the manual?
Questions and answers