![]() |
| RabbitCore RCM3900 User's Manual |
4. Hardware Reference
Chapter 4 describes the hardware components and principal hardware subsystems of the RCM3900 modules. Appendix A, "RCM3900 Specifications," provides complete physical and electrical specifications.
Figure 4 shows the Rabbit-based subsystems designed into the RCM3900.
![]()
4.1 RCM3900 Inputs and Outputs
Figure 5 shows the RCM3900 pinouts for headers J61 and J62.
![]()
The pinouts for the RCM3000, RCM3100, RCM3200, RCM3300/RCM3305/RCM3309/RCM3319, RCM3360/RCM3370, RCM3365/RCM3375, and RCM3900 are almost compatible, except signals PB0, PC4, and PC5. are used for the SPI interface to the serial flash on the RCM3305/RCM3309/RCM3315/RCM3319 and for the miniSD Card on the RCM3900/RCM3910, but are available on the other modules.
Headers J61 and J62 are standard 2 × 17 headers with a nominal 2 mm pitch. An RJ-45 Ethernet port is also included with the RCM3900.
Pins 2932 on header J61 are configured using 0 W resistors at locations JP9, JP10, JP7, and JP8 to enable connections to PD2, PD3, PD6, and PD7 respectively. Note that there is no 0 W resistor at location JP9 since PD2/TPO is not available on header J61. They may also be reconfigured to carry the Ethernet signals TPO, TPO+, TPI, and TPI+, but this capability is reserved for future use.
Pins 33 and 34 on header J61 are wired via 0 W surface-mount resistors at JP2 and JP3 to carry the ACT and LINK signals that illuminate the corresponding LEDs on the RCM3900 module. These pins may be "configured" to carry PD0 and PD1, an option that is reserved for future use.
See Appendix A.6 for more information about the locations of these headers.
Figure 6 shows the use of the Rabbit 3000 microprocessor ports in the RCM3900 modules.
![]()
The ports on the Rabbit 3000 microprocessor used in the RCM3900 are configurable, and so the factory defaults can be reconfigured. Table 2 lists the Rabbit 3000 factory defaults and the alternate configurations.
- When using pins 3334 on header J3 to drive LEDs, these pins can handle a sinking current of up to 8 mA.
- The VRAM voltage is temperature-dependent. If the VRAM voltage drops below about 1.2 V to 1.5 V, the contents of the battery-backed SRAM may be lost. If VRAM drops below 1.0 V, the 32 kHz oscillator could stop running. Pay careful attention to this voltage if you draw any current from this pin.
- Do not overload the /IOWR line because the NAND flash memories have critical timing requirements. In some cases it may be necessary to buffer /IOWR on the motherboard.
4.1.1 Memory I/O Interface
The Rabbit 3000 address lines (A0A18) and all the data lines (D0D7) are routed internally to the onboard flash memory and SRAM chips. I/O write (/IOWR) and I/O read (/IORD) are available for interfacing to external devicespay attention to the loading on these two signals if you use them since these signals are also used by the RCM3900.
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 PB2PB7 can also be used as an auxiliary address bus.
When using the external I/O bus for a digital output or the LCD/keypad module on the Prototyping Board, or for any other reason, you must add the following line at the beginning of your program.
#define PORTA_AUX_IO // required to enable auxiliary I/O bus4.1.2 LEDs
The RCM3900 has three Ethernet status LEDs located beside the RJ-45 Ethernet jackthese are discussed in Section 4.2.2.
Additionally, there is one dual LED DS4. PD1 on the Rabbit 3000's Parallel Port D is used to enable the NAND flash on the RCM3900 model, but is connected to the green CE LED at DS4, which is not used. The red BSY LED at DS4 is a user-programmable LED, and is controlled by PD0. The
CONTROLLEDS.CandFLASHLEDS.Csample programs in the Dynamic CSAMPLES\RCM3900folder show how to set up and use this user-programmable LED.4.1.3 Other Inputs and Outputs
The status, /RESET_IN, SMODE0, and SMODE1 I/O are normally associated with the programming port. Since the status pin is not used by the system once a program has been downloaded and is running, the status pin can then be used as a general-purpose CMOS output. The programming port is described in more detail in Section 4.2.3.
/RESET_IN is an external input used to reset the Rabbit 3000 microprocessor and the RCM3900 onboard peripheral circuits. /RES is an output from the reset circuitry that can be used to reset external peripheral devices.
4.2 Serial Communication
The RCM3900 does not have any serial protocol-level transceivers directly on the board. However, a serial interface may be incorporated into the board the RCM3900 is mounted on. For example, the Prototyping Board has RS-232 and RS-485 transceiver chips.
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. An asynchronous port can handle 7 or 8 data bits. A 9th bit address scheme, where an additional bit is sent to mark the first byte of a message, is also supported.
Serial Port A is normally used as a programming port, but may be used either as an asynchronous or as a clocked serial port once the RCM3900 has been programmed and is operating in the Run Mode.
Serial Port B is used as the SPI interface for the miniSD Card, and is not available for other use.
Serial Ports C and D can also be operated in the clocked serial mode. In this mode, a clock line synchronously clocks the data in or out. Either of the two communicating devices can supply the clock.
Serial Ports E and F can also be configured as HDLC serial ports. The IrDA protocol is also supported in SDLC format by these two ports.
4.2.2 Ethernet Port
Figure 7 shows the pinout for the RJ-45 Ethernet port (J3). Note that some Ethernet connectors are numbered in reverse to the order used here.
![]()
Three LEDs are placed next to the RJ-45 Ethernet jack, one to indicate Ethernet link/activity (LNK/ACT), one to indicate when the RCM3900 is connected to a functioning 100Base-T network (SPD), and one (FDX/COL) to indicate whether the Ethernet connection is in full-duplex mode (steady on) or that a half-duplex connection is experiencing collisions (blinks).
The transformer/connector assembly ground is connected to the RCM3900 printed circuit board digital ground via a ferrite bead, L1, as shown in Figure 8.
![]()
The RJ-45 connector is shielded to minimize EMI effects to/from the Ethernet signals.
The Ethernet chip supports auto MDI/MDIX on the Ethernet port to choose the Ethernet interface automatically based on whether a crossover cable or a straight-through cable is used in a particular setup. The Ethernet chip may spike the current draw by up to 200 mA while it is searching to determine the type of Ethernet cable. This search is repeated every second if no Ethernet cable is detected. If you do not plan to connect an Ethernet cable, use the Dynamic C
pd_powerdown()function call to turn off the Ethernet chip. Thepd_powerup()function call is available to turn the Ethernet chip back on at a later time. These function calls are described in the Dynamic C TCP/IP User's Manual, Volume 1.4.2.3 Serial Programming Port
The RCM3900 is programmed either through the serial programming port, which is accessed using header J1, or through the Ethernet jack. The RabbitLink may be used to provide a serial connection via the RabbitLink's Ethernet jack. The programming port uses the Rabbit 3000's Serial Port A for communication; Serial Port A is not used when programming is done over an Ethernet connection via the Dynamic C download manager. Dynamic C uses the programming port to download and debug programs.
The programming port is also used for the following operations.
- Cold-boot the Rabbit 3000 on the RCM3900 after a reset.
- Remotely download and debug a program over an Ethernet connection using the RabbitLink EG2110.
- Fast copy designated portions of flash memory from one Rabbit-based board (the master) to another (the slave) using the Rabbit Cloning Board.
In addition to Serial Port A, the Rabbit 3000 startup-mode (SMODE0, SMODE1), status, and reset pins are available on the serial programming port.
The two startup mode pins determine what happens after a resetthe Rabbit 3000 is either cold-booted or the program begins executing at address 0x0000.
The status pin is used by Dynamic C to determine whether a Rabbit microprocessor is present. The status output has three different programmable functions:
- It can be driven low on the first op code fetch cycle.
- It can be driven low during an interrupt acknowledge cycle.
- It can also serve as a general-purpose CMOS output.
The /RESET_IN pin is an external input that is used to reset the Rabbit 3000 and the RCM3900 onboard peripheral circuits. The serial programming port can be used to force a hard reset on the RCM3900 by asserting the /RESET_IN signal.
Alternate Uses of the Serial Programming Port
All three clocked Serial Port A signals are available as
- a synchronous serial port
- an asynchronous serial port, with the clock line usable as a general CMOS I/O pin
The programming port may also be used as a serial port once the application is running. The SMODE pins may then be used as inputs and the status pin may be used as an output.
Refer to the Rabbit 3000 Microprocessor User's Manual for more information.
4.3 Serial Programming Cable
The programming cable is used to connect the serial programming port of the RCM3900 to a PC USB COM port. The programming cable converts the voltage levels used by the PC USB port to the CMOS voltage levels used by the Rabbit 3000.
When the PROG connector on the programming cable is connected to the RCM3900 serial programming port at header J1, programs can be downloaded and debugged over the serial interface.
The DIAG connector of the programming cable may be used on header J1 of the RCM3900 with the RCM3900 operating in the Run Mode. This allows the programming port to be used as a regular serial port.
4.3.1 Changing Between Program Mode and Run Mode
The RCM3900 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 state 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. When the programming cable's PROG connector is not attached, the SMODE pins are pulled low, causing the Rabbit 3000 to operate in the Run Mode.
![]()
A program "runs" in either mode, but can only be downloaded and debugged when the RCM3900 is in the Program Mode.
Refer to the Rabbit 3000 Microprocessor User's Manual for more information on the programming port.
4.3.2 Standalone Operation of the RCM3900
The RCM3900 must be programmed via the Prototyping Board or via a similar arrangement on a customer-supplied board. Once the RCM3900 has been programmed successfully, remove the serial programming cable from the programming connector and reset the RCM3900. The RCM3900 may be reset by cycling the power off/on or by pressing the RESET button on the Prototyping Board. The RCM3900 module may now be removed from the Prototyping Board for end-use installation.
4.4 Memory
4.4.1 SRAM
RCM3900 boards have 512K of program-execution fast SRAM at U66. The program-execution SRAM is not battery-backed. There are 512K of battery-backed data SRAM installed at U9.
4.4.2 Flash EPROM
RCM3900 boards also have 512K of flash EPROM at U8.
NOTE Rabbit 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. Writing to arbitrary flash memory addresses at run time is discouraged. Instead, use a portion of the "user block" area to store persistent data. The
writeUserBlock()andreadUserBlock()function calls are provided for this. Refer to the Rabbit 3000 Microprocessor Designer's Handbook and the Dynamic C Function Reference Manual for additional information.A Flash Memory Bank Select jumper configuration option based on 0 W surface-mounted resistors exists at header JP12 on the RCM3900 RabbitCore modules. This option, used in conjunction with some configuration macros, allows Dynamic C to compile two different co-resident programs for the upper and lower halves of a 256K flash in such a way that both programs start at logical address 0000. This option is not relevant to the RCM3900 RabbitCore modules, which use 512K flash memories.
4.4.3 NAND Flash (RCM3900 only)
The RCM3900 model has a NAND flash to store data and Web pages. The NAND flash is particularly suitable for mass-storage applications, but is generally unsuitable for direct program execution. The NAND flash differs from parallel NOR flash (the type of flash memory used to store program code on Rabbit-based boards and RabbitCore modules currently in production) in two respects. First, the NAND flash requires error-correcting code (ECC) for reliability. Although NAND flash manufacturers do guarantee that block 0 will be error-free, most manufacturers guarantee that a new NAND flash chip will be shipped with a relatively small percentage of errors, and will not develop more than some maximum number or percentage of errors over its rated lifetime of up to 100,000 writes. Second, the standard NAND flash addressing method multiplexes commands, data, and addresses on the same I/O pins, while requiring that certain control lines must be held stable for the duration of the NAND flash access. The software function calls provided by Rabbit for the NAND flash take care of the data-integrity and reliability attributes.
Sample programs in the
SAMPLES\RCM3900\NANDFlashfolder illustrate the use of the NAND flash. These sample programs are described in Section 3.2.1, "Use of NAND Flash (RCM3900 only)."4.4.4 miniSD Cards
The RCM3900 supports a removable miniSD Card up to 1GB to store data and Web pages. The miniSD Card is particularly suitable for mass-storage applications, but is generally unsuitable for direct program execution.
Unlike other flash devices, the miniSD Card has some intelligence, which facilitates working with it. You do not have to worry about erased pages. All miniSD Cards support 512-byte reads and writes, and handle any necessary pre-erasing internally.
The miniSD Card socket on the RCM3900 has a plastic insert when shipped to protect the socket. This insert must be removed before you will be able to insert a miniSD Card.
Figure 10 shows how to insert or remove the miniSD Card. The card is designed to fit easily only one way do not bend the card or force it into the slot. While you remove or insert the card, take care to avoid touching the electrical contacts on the bottom of the card to prevent electrostatic discharge damage to the card and to keep any moisture or other contaminants off the contacts. You will sense a soft click once the card is completely inserted. To remove it, gently press the card towards the middle of the RCM3900 you will sense a soft click and the card will be ready to be removed. Do not attempt to pull the card from the socket before pressing it in otherwise the ejection mechanism will get damaged. The ejection mechanism is spring-loaded, and will partially eject the card when used correctly.
![]()
Rabbit recommends that you use the miniSD Card holder at header J2 only for the miniSD Card since other devices are not supported. Be careful to remove and insert the card as described, and be careful not to insert any foreign objects, which may short out the contacts and lead to the destruction of your card.
It is possible to hot-swap miniSD Cards without removing power from the RCM3900 modules. The file system partition must be unmounted before the cards can be safely hot-swapped. The chip selects associated with the card must be set to their inactive state, and read/write operations addressed to the miniSD Card port cannot be allowed to occur. These operations can be initiated in software by sensing an external switch actuated by the user, and the card can then be removed and replaced with a different one. Once the application program detects a new card, the file system partition can be remounted. These steps allow the miniSD Card to be installed or removed without affecting either the program, which continues to run on the RCM3900 module, or the data stored on the card. The Dynamic C FAT file system will handle this overhead automatically by unmounting the miniSD Card.
NOTE When using the optional Dynamic C FAT file system module, do not remove or insert the miniSD Card while the miniSD Card is mounted. You may add an LED to your design or use the BSY LED at DS4 to indicate when the miniSD Card is mounted. The LED can be set to turn off when the miniSD Card is unmounted, indicating that it is safe to remove it. The BSY LED at DS4 is controlled by PD0; your own LED would use an available parallel port I/O pin. The following macros in the Dynamic C
LIB\Rabbit3000\SDflash\SDFLASH.LIBlibrary will have to be modified to identify the parallel port pin and to specify the on/off conditions for the LED.
#define SD_LED_PORT_DR PxDR // where x is the Parallel Port (AE)
// 0 for no indicator LED
#define SD_LED_PORT_DRSHADOW PxDRShadow // where x is the Parallel Port
// NULL for no indicator LED
#define SD_LED_PORT_FR PxDFR // where x is the Parallel Port (AE)
// 0 for no indicator LED
#define SD_LED_PORT_FRSHADOW PxFRShadow // where x is the Parallel Port
// NULL for no indicator LED
#define SD_LED_PORT_DDR PxDDR // where x is the Parallel Port (AE)
// 0 for no indicator LED
#define SD_LED_PORT_DDRSHADOW PxDDRShadow // where x is the Parallel Port
// NULL for no indicator LED
#define SD_LED_PORT_DCR PxCR // where x is the Parallel Port (AE)
// 0 for no indicator LED
#define SD_LED_PORT_DCRSHADOW PxCRShadow // where x is the Parallel Port
// NULL for no indicator LED
#define SD_LED_PIN n // Identify pin on parallel port (07)
// Use 0 for no indicator LED
#define SD_LED_PORT_OD 0 // LED is driven by transistor
// 1 to drive LED directly by open-drain output
#define SD_LED_PORT_ON 1 // 0 for no indicator LED or to drive LED
// directly by open-drain output, otherwise 1Standard Windows SD Card readers may be used to read the miniSD Card formatted by the Dynamic C FAT file system with the RCM3900 as long as it has not been partitioned. An SD Card adapter is included with the miniSD Card in the in the RCM3900 Development Kit. The SD Card adapter has a sliding switch along the left side that may be moved down to write-protect the miniSD Card while it is being used with an SD Card reader.
Sample programs in the
SAMPLES\RCM3900\SD_Flashfolder illustrate the use of the miniSD Cards. These sample programs are described in Section 3.2.2, "Use of miniSD Cards."4.5 Other Hardware
4.5.1 Clock Doubler
The RCM3900 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 RCM3900 is generated using a 22.12 MHz crystal.
The clock doubler may be disabled if 44.2 MHz clock speeds are not required. This will reduce power consumption and further reduce radiated emissions. The clock doubler is disabled with a simple configuration macro as shown below.
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.
NOTE Refer to the Rabbit 3000 Microprocessor User's Manual for more information on the spectrum-spreading setting and the maximum clock speed.
| RabbitA Digi International Brand www.rabbit.com |