Coyote (BL2500)
User's Manual
PREV INDEX NEXT


3. Subsystems

Chapter 3 describes the principal subsystems for the Coyote.

Digital I/O
Analog Features
Serial Communication
Memory

Figure 8 shows these Rabbit-based subsystems designed into the Coyote.


Figure 8. Coyote Subsystems

The memory and microprocessor are located on the RabbitCore module. If you have more than one Coyote or other Rabbit products built around RabbitCore modules, take care not to swap the RabbitCore modules since they contain system ID block information and calibration constants that are unique to the board they were originally installed on. It is a good idea to save the calibration constants should you need to replace a RabbitCore module in the future. See Section 4.2.6, "Using System Information from the RabbitCore Module," for more information.

3.1 Coyote Pinouts

The Coyote pinouts are shown in Figure 9.


Figure 9. Coyote Pinouts

3.1.1 Headers

Standard Coyote models are equipped with five 1 × 10 friction-lock connector terminals (J1, J3, J9, J11, and J12) where pin 9 is removed to polarize the connector terminals, a 2 × 5 RS-232 signal header, a 2 × 5 programming header, and an RJ-45 Ethernet jack on the RabbitCore module.

The RJ-45 jacks at J4 and J5 labeled RabbitNet are serial I/O expansion ports for use with digital I/O and analog I/O boards currently being developed. The RabbitNet jacks do not support Ethernet connections. Be careful to connect your Ethernet cable to the jack labeled Ethernet.

Two 4-pin 0.156" friction-lock connector terminals at J7 and J8 are installed to supply power (DCIN and +5 V) to the peripheral cards currently being developed for use with the RabbitNet. Two 2-pin 0.156" friction-lock connector terminals at J2 and J10 are for power supply and +K connections.

Table 3 lists Molex connector part numbers for the crimp terminals, housings, and polarizing keys needed to assemble female friction-lock connector assemblies for use with their male counterparts on the BL2500.

Table 3. Female Friction-Lock Connector Parts
Friction-Lock
Connector
Used with BL2500 Headers Molex Housing
Part Number
Molex
Crimp Terminals
Molex
Polarizing Keys

0.1" 1 × 10

J1, J3, J9, J11, J12

22-01-2107

08-50-0113

15-04-9209

0.156" 1 × 4

J7, J8

09-50-3041

08-50-0108

15-04-0219

0.156" 1 × 2

J2, J10

09-50-3021


3.2 Indicators

3.2.1 LEDs

The Coyote's RabbitCore module has two LEDs next to the RJ-45 Ethernet jack, one to indicate an Ethernet link (LNK) and one to indicate Ethernet activity (ACT).

User-programmable LEDs driven by the Rabbit 3000

are also provided.

3.3 Digital I/O

3.3.1 Digital Inputs

The Coyote has 16 digital inputs, IN00-IN15. IN00-IN13 and IN15 are each protected over a range of -36 V to +36 V, and IN14 is protected over a range of -36 V to +5 V. The inputs are factory-configured to be pulled up to +3.3 V; IN00-IN07 can also be pulled up to +K or they can be pulled down to 0 V by changing a surface-mounted 0 W resistor. Figure 10 shows a sample digital input circuit. IN00-IN07 and IN15 are protected against noise spikes by a low-pass filter composed of a 22 kW series resistor and a 10 nF capacitor.


Figure 10. Coyote Digital Inputs [Pulled Up--Factory Default]

Coyote series boards can be made to order in volume with the digital inputs pulled up to +K or pulled down to 0 V. Contact your authorized Rabbit distributor or your sales representative at for more information.

The actual switching threshold between a zero and a one is between 0.9 V and 2.3 V for all 16 inputs.

IN00-IN13 and IN15 are each fully protected over a range of -36 V to +36 V, and can handle short spikes of ±40 V. IN14 is protected over a range of -36 V to +5 V.


Figure 11. Coyote Digital Input Protected Range


3.3.2 Digital Outputs

The Coyote has eight digital outputs, OUT0-OUT7, each of which can sink up to 200 mA. Figure 12 shows a wiring diagram for using the digital outputs in a sinking configuration.


Figure 12. Coyote Digital Outputs

+K is an externally supplied voltage of 3.3-40 V DC, and should be capable of delivering all the load currents. Although a connection to a +K supply is not absolutely required with sinking outputs, it is highly recommended to protect against current spikes when driving inductive loads such as relays and solenoids.

Connect the positive +K supply to pin 1 of friction-lock connector terminal J10 and the negative side of the supply to pin 2 of friction-lock connector terminal J10. A friction-lock connector is recommended to connect this supply because the +K inputs are not protected against reverse polarity, and serious damage to the Coyote may result if you connect this supply backwards.

3.4 Analog Features

3.4.1 A/D Converter

The A/D converter, shown in Figure 13, compares the DA0 voltage to AD0, the voltage presented to the A/D converter. DA0 therefore cannot be used for the D/A converter when the A/D converter is being used.


Figure 13. Schematic Diagram of A/D Converter

The A/D converter programs DA0 using a successive-approximation binary search until DA0 equals the A/D converter input voltage. That programmed DA0 voltage is then reported as the A/D converter value.

The A/D converter transforms the voltage at DA0 into a 13.2 mV window around DA0. Because the A/D converter circuit uses a 13.2 mV window, the accuracy is ±6.6 mV. DA0 can range from 0.1 V to 3.1 V, which represents 227 steps of 13.2 mV. This represents an accuracy of approximately 8 bits. Since the D/A converter is able to change the DA0 output in 3.22 mV steps, there are 930 steps over the range from 0.1 V to 3.1 V. This represents a resolution of more than 9 bits.

For example, if DA0 is 1.650 V, the window in the A/D converter would be 1.643 V to 1.657 V. If AD0 > 1.657 V, PB2 would read high and PB3 would read low. If 1.643 V < AD0 < 1.657 V, PB2 would read low and PB3 would read low. This is the case when the A/D input is exactly the same as DA0. If AD0 < 1.643 V, PB2 would read low and PB3 would read high. The A/D converter input, AD0, is the same as DA0 only when both PB2 and PB3 are low.

PB3 can be imagined to be a "DA0 voltage is too high" indicator. If DA0 is larger than the analog voltage presented at AD0, then PB3 will be true (high). If this happens, the program will need to reduce the DA0 voltage.

PB2 can be imagined to be a "DA0 voltage is too low" indicator. If DA0 is smaller than the analog voltage presented at AD0, then PB2 will be true (high). If this happens, the program will need to raise the DA0 voltage.

The A/D converter has no reference voltage. There is a relative accuracy between measurements, but no absolute accuracy without calibration. This is because the +3.3 V supply can vary ±5%, the pulse-width modulated outputs might not reach the full 0 V and 3.3 V rails out of the Rabbit 3000 microprocessor, and the gain resistors used in the circuit have a 1% tolerance. For these reasons, each Coyote needs to be calibrated individually, with the constants held in software, to be able to rely on an absolute accuracy. The Coyote has this calibration support.

An A/D conversion takes less than 100 ms with a 29.4 MHz Coyote.

3.4.2 D/A Converters

Two D/A converter outputs, DA0 and DA1, are supplied on the Coyote. These are shown in Figure 14.

Figure 14. Schematic Diagram of D/A Converters

The D/A converters have no reference voltage. Although they may be fairly accurate from one programmed voltage to the next, they do not have absolute accuracy. This is because the +3.3 V supply can change ±5%, the PWM outputs might not achieve the full 0 V and 3.3 V rail out of the processor, and the gain resistors in the circuit have a 1% tolerance. The D/A converters therefore need individual calibration, with the calibration constants held in software before absolute accuracy can be relied on. The Coyote has such calibration.

Note that DA0 is used to provide a reference voltage for the A/D converter and is unavailable for D/A conversion when the A/D converter is being used.

Pulse-width modulation (PWM) is used for the D/A conversion. The digital signal, which is either 0 V or 3.3 V, will be a train of pulses. This means that if the signal is taken to be usually at 0 V (or ground), the pulses will be some 3.3 V pulses of varying width. The voltage will be 0 V for a given time, then jump to 3.3 V for a given time, then back to ground for a given time, then back to 3.3 V, and so on. A hardware filter that consists of a resistor and capacitor averages the 3.3 V signal and the 0 V signal over time. Therefore, if the time that the signal is at 3.3 V is equal to the time the signal is 0 V, the duty cycle will be 50%, and the average signal will be 1.65 V. If the time at 3.3 V is only 25% of the time, then the average voltage will be 0.825 V. Thus, the software needs to only vary the time the signal is at 3.3 V with respect to the time the signal is at 0 V to achieve any desired voltage between 0 and 3.3 V. It is very easy to do pulse-width modulation with the Rabbit 3000 microprocessor because the chip's architecture includes an advanced PWM feature.

3.4.2.1 DA0 and DA1

The RC networks supporting DA0 and DA1 converts pulse-width modulated signals to an analog voltage between 0 V and 3.3 V. A digital signal that varies with time is fed from PF6 or PF7. The resolution of the DA0 or DA1 output depends on the smallest increment of time to change the on/off time (the time between 3.3 V and 0 V). The Coyote uses the Rabbit 3000's Port F control registers to clock out the signal at a timer timeout. The dedicated PWM hardware has 10 bits of resolution, and so that the voltage can be varied in 1/1024 increments. The resolution is thus about 3 mV (3.3 V/1024).

R6 and R13 are present solely to balance the op amp input current bias. R4 and R15 help to achieve a voltage close to ground for a 0% duty cycle.

A design constraint dictates how fast the PWM hardware must run. The hardware filter has a resistor-capacitor filter that averages the 0 V and 3.3 V values. Its effect is to smooth out the digital pulse train. It cannot be perfect, and so there will be some ripple in the output voltage. The maximum signal decay between pulses will occur when DA1 is set to 1.65 V. This means the pulse train will have a 50% duty cycle. The maximum signal decay will be


where RC = 2.5 ms, and t is the pulse on or off time (not the length of the total cycle).

The PWM hardware is driven at the Rabbit 3000 frequency divided by 2. The frequency achievable with a 29.4 MHz clock is (29.4 MHz/2)/1024 = 14.3 kHz. Since the Rabbit 3000 PWM spreader enhances the frequency fourfold, the effective frequency becomes 57.4 kHz. This is a period of 1/f = 17.4 µs. For a 50% duty cycle, half of the period will be high (8.7 µs at 3.3 V), and half will be low (8.7 µs at 0 V). Thus, a 29.4 MHz Coyote has t = 8.7 µs.

Based on the standard capacitor discharge formula, this means that the maximum voltage change will be


This is a ripple of approximately 6 mV peak-to-peak.

Table 4 lists typical uncalibrated DA0 or DA1 voltages measured for various duty cycle values with a load larger than 1 MW.

Table 4. Typical Uncalibrated DA0 or DA1 Voltages for Various Duty Cycles
Duty Cycle (%) Voltage
(V)
Programmed Count

0

0.086

1

50

1.628

512

100

3.244

1023


The full D/A converter voltage range of 0-3.3 V cannot be realized because of the voltage tolerances associated with the voltage regulator, the Rabbit 3000 PWM output, and the op-amp rail. The circuit can achieve an actual voltage range of 0.1-3.3 V.

It is important to remember that the DA0 or DA1 output voltage will not be realized instantaneously after programming in a value. There is a settling time because of the RC time constant (24.9 kW × 100 nF), which is 2.5 ms. For example, the voltage at any given time is

V = VP - (VP - VDA)e(-t/RC)

where V is the voltage at time t, VP is the programmed voltage, VDA is the last DA0 or DA1 output voltage from the D/A converter, and RC is the time constant (2.5 ms). The settling will be within 99.326% (or within about 22 mV for a 3.3 V change in voltage) after five time constants, or 12.5 ms. Six time constants, 15 ms, will allow settling to within 99.75% (or to within about 8 mV for a 3.3 V change in voltage). Seven time constants, 17.5 ms, will allow settling to within 99.91% (or to within about 3 mV for a 3.3 V change in voltage).

An LM324 op amp, which can comfortably source 10 mA throughout the D/A converter range, drives the D/A converter output. If the output voltage is above 1 V, the D/A converter can comfortably sink 10 mA. Below 1 V, the D/A converter can only sink a maximum of 100 µA.

To summarize, DA0 and DA1 are factory-calibrated, with the calibration constants stored in flash memory. DA0 and DA1 can be programmed with a resolution of 3 mV and a peak-to-peak ripple of 6 mV over the range from 0.1 to 3.1 V. The settling time to within 3 mV is 17.5 ms.

3.5 Serial Communication

The Coyote has two RS-232 serial ports, which can be configured as one RS-232 serial channel (with RTS/CTS) or as two RS-232 (3-wire) channels. The Coyote also has one RS-485 serial channel, one clocked CMOS serial channel, and two SPI serial ports with RS-422. There is also a CMOS serial channel that serves as the programming/debug port.

Table 5. Coyote Serial Port Configuration
Serial Port Use Header

A

Programming Port

J3 (RabbitCore module)

B

RabbitNet SPI (RS-422)

J4/J5

C

Clocked CMOS

J9

D

RS-485

J9

E

RS-232

J6

F

RS-232

J6


The RS-232 and RS-485 serial ports 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. The CMOS serial channel and the two RS-422 SPI ports 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 for the clocked CMOS channel. As the master, the Coyote must supply the clock for the SPI ports.

The Coyote boards use all six serial ports. Serial Port A is used in the clocked serial mode to provide cold-boot, download, and emulation functions. Serial Port B is multiplexed between the two SPI RS-422 RabbitNet ports, SPI_1 and SPI_2. Clocked Serial Port C is available as a basic CMOS voltage-level serial port. Serial Port D is used for RS-485 communication, and Serial Ports E and F are used for RS-232 communication.

3.5.1 RS-232

The Coyote RS-232 serial communication is supported by an RS-232 transceiver. This transceiver provides the voltage output, slew rate, and input voltage immunity required to meet the RS-232 serial communication protocol. Basically, the chip translates the Rabbit 3000's CMOS/TTL signals to RS-232 signal levels. Note that the polarity is reversed in an RS-232 circuit so that a +3.3 V output becomes approximately -6 V and 0 V is output as +6 V. The RS-232 transceiver also provides the proper line loading for reliable communication.

RS-232 can be used effectively at the Coyote's maximum baud rate for distances of up to 15 m.

RS-232 flow control on an RS-232 port is initiated in software using the serXflowcontrolOn function call from RS232.LIB, where X is the serial port (E or F). The locations of the flow control lines are specified using a set of five macros.

SERX_RTS_PORT--Data register for the parallel port that the RTS line is on (e.g., PGDR).
SERX_RTS_SHADOW--Shadow register for the RTS line's parallel port (e.g., PGDRShadow).
SERX_RTS_BIT--The bit number for the RTS line.
SERX_CTS_PORT--Data register for the parallel port that the CTS line is on (e.g., PCDRShadow).
SERX_CTS_BIT--The bit number for the CTS line.

Standard 3-wire RS-232 communication using Serial Ports E and F is illustrated in the following sample code.

3.5.2 RS-485

The Coyote has one RS-485 serial channel, which is connected to the Rabbit 3000 Serial Port D through an RS-485 transceiver. The half-duplex communication uses PA4 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.

Serial Port D is configured in software for RS-485 as follows.

The configuration shown above is based on circular buffers. RS-485 configuration may also be done using functions from the PACKET.LIB library.

The Coyote can be used in an RS-485 multidrop network spanning up to 1200 m (4000 ft), and there can be as many as 32 attached devices. Connect the 485+ to 485+ and 485- to 485- using single twisted-pair wires as shown in Figure 15. Note that a common ground is recommended.


Figure 15. Coyote Multidrop Network

The Coyote comes with a 220 W termination resistor and two 681 W bias resistors installed and enabled.

The load these bias and termination resistors present to the RS-485 transceiver limits the number of Coyotes in a multidrop network to one master and nine slaves, unless the bias and termination resistors are removed. When using more than 10 Coyotes in a multidrop network, or when you need the full common-mode immunity per the RS-485 specification, leave the 681 W bias resistors in place on the master Coyote, and leave the 220 W termination resistors in place on the Coyote at each end of the network.


Figure 16. RS-485 Termination and Bias Resistors

3.5.3 Programming Port

The Coyote's serial programming port is accessed via the 10-pin programming header on the RabbitCore module 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.

The programming port is also used for the following operations.

Alternate Uses of the Programming Port

All three clocked Serial Port A signals are available as

The programming port may also be used as a serial port via the DIAG connector on the programming cable.

In addition to Serial Port A, the Rabbit 3000 startup-mode (SMODE0, SMODE1), status, and reset pins are available on the programming port.

The two startup mode pins determine what happens after a reset--the 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:

  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.

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.

Refer to the Rabbit 3000 Microprocessor User's Manual for more information.

3.5.4 RabbitNet Ports

The RJ-45 jacks labeled RabbitNet are multiplexed clocked SPI RS-422 serial I/O expansion ports for use with peripheral cards currently being developed. The RabbitNet jack does not support Ethernet connections.

3.5.5 Ethernet Port

Figure 17 shows the pinout for the RJ-45 Ethernet port (header J4 on the RabbitCore module). Note that some Ethernet connectors are numbered in reverse to the order used here.


Figure 17. RJ-45 Ethernet Port Pinout

Two LEDs are placed next to the RJ-45 Ethernet jack, one to indicate an Ethernet link (LNK) and one to indicate Ethernet activity (ACT).

The transformer/connector assembly ground is connected to the RabbitCore module printed circuit board digital ground via a 0 W resistor, R31, as shown in Figure 18.


Figure 18. Isolation Resistor R31
on RabbitCore Module

The RJ-45 connector is shielded to minimize EMI effects to/from the Ethernet signals.

3.6 Serial Programming Cable

The programming cable is used to connect the serial programming port of the Coyote to a PC serial COM port. The programming cable converts the RS-232 voltage levels used by the PC serial port to the CMOS voltage levels used by the Rabbit 3000.

When the PROG connector on the programming cable is connected to the programming header on the Coyote's RabbitCore module, programs can be downloaded and debugged over the serial interface.

The DIAG connector of the programming cable may be used on the programming header on the Coyote's RabbitCore module with the Coyote operating in the Run Mode. This allows the programming port to be used as a regular serial port.

3.6.1 Changing Between Program Mode and Run Mode

The Coyote 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. 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.


Figure 19. Coyote Program Mode and Run Mode Setup

A program "runs" in either mode, but can only be downloaded and debugged when the Coyote is in the Program Mode.

Refer to the Rabbit 3000 Microprocessor User's Manual for more information on the programming port and the programming cable.

3.7 Other Hardware

3.7.1 Clock Doubler

The Coyote 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 29.4 MHz frequency specified for the Coyote is generated using a 14.7456 MHz crystal. The clock doubler will not work for crystals with a frequency above 26.7264 MHz.

The clock doubler may be disabled if 29.4 MHz clock speeds are not required. Disabling the Rabbit 3000 microprocessor's internal clock doubler will reduce power consumption and further reduce radiated emissions. The clock doubler is disabled with a simple configuration macro as shown below.

  1. Select the "Defines" tab from the Dynamic C Options > Project Options menu.

  2. Add the line CLOCK_DOUBLED=0 to always disable the clock doubler.

    The clock doubler is enabled by default, and usually no entry is needed. If you need to specify that the clock doubler is always enabled, add the line CLOCK_DOUBLED=1 to always enable the clock doubler.

  3. Click OK to save the macro. The clock doubler will now remain off whenever you are in the project file where you defined the macro.


NOTE Disabling the clock doubler will degrade the A/D and D/A conversion.

3.7.2 Spectrum Spreader

The Rabbit 3000 features a spectrum spreader, which helps to mitigate EMI problems. By default, the spectrum spreader is on automatically, 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.

  1. Select the "Defines" tab from the Dynamic C Options > Project Options menu.

  2. Normal spreading is the default, and usually no entry is needed. If you need to specify normal spreading, add the line

    ENABLE_SPREADER=1

For strong spreading, add the line

    ENABLE_SPREADER=2

To disable the spectrum spreader, add the line

    ENABLE_SPREADER=0

NOTE The strong spectrum-spreading setting is not recommended since it may limit the maximum clock speed or the maximum baud rate. It is unlikely that the strong setting will be used in a real application.

  1. Click OK to save the macro. The spectrum spreader will now remain off whenever you are in the project file where you defined the macro.


NOTE Refer to the Rabbit 3000 Microprocessor User's Manual for more information on the spectrum-spreading setting and the maximum clock speed.

3.8 Memory

3.8.1 SRAM

The Coyote's RabbitCore module is designed to accept 128K to 512K of SRAM packaged in an SOIC case. The standard Coyote's RabbitCore modules come with 128K of SRAM.

3.8.2 Flash Memory

The Coyote is also designed to accept 128K to 512K of flash memory. The standard Coyote's RabbitCore modules comes with one 256K flash memory.

NOTE Rabbit recommends that any customer applications should not be constrained by the sector size of the flash memory since it may be necessary to change the sector size in the future.

Writing to arbitrary flash memory addresses at run time is also discouraged. Instead, use a portion of the "user block" area to store persistent data. The functions writeUserBlock and readUserBlock are provided for this. Refer to the Rabbit 3000 Microprocessor Designer's Handbook for additional information.

A Flash Memory Bank Select jumper configuration option based on 0 W surface-mounted resistors exists at header JP2 on the RabbitCore module. 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 the 256K flash in such a way that both programs start at logical address 0000. This is useful for applications that require a resident download manager and a separate downloaded program. See Technical Note 218, Implementing a Serial Download Manager for a 256K Flash, for details.


Rabbit—A Digi International Brand
www.rabbit.com
PREV INDEX NEXT