Authors and Contributors: Chun-kan Leung & Kevin Sivieng
Date: 9th January 2012
Foreword
This is an account of the time two second-year electrical engineering students of the University of New South Wales, Chun-kan Leung and Kevin Sivieng, spent working as interns at the company Emtronix.
Departing from Sydney, Australia, in November 2011, following the conclusion of end-of-semester exams, we arrived to find the city of Chengdu a buzzing metropolis of seemingly-haphazard traffic, which we encountered at every turn.The people seemed brash in an industrious we-will-brook-no-nonsense sort of way, but were polite and courteous upon further inspection.
The next day, arriving at what was to be 'the workplace' for the next two-and-a-half months, we were kindly welcomed by our supervisor, Dr. Cheng Shi (Director of Emtronix) as well as the people who would be our work colleagues. Although the day did not conclude without a few awkward and not altogether comical instances in which the ever-present language barrier was felt most keenly, our overriding anticipation of what was to come and our silent-approval of what we beheld there for the first time ensured that the day passed swiftly. As we toured each department of the company, little did we know that our appreciation of how efficient and concerted the efforts of each person, in their well-deserved roles, would only grow immeasurably in the ensuing weeks. The confidence of each person in performing the tasks allocated to them was palpable and the concept of a 'well-oiled machine' inexorably came to the fore.
Our first few days of work were spent becoming familiar with the products that we would become intimated with by the end of our short stay: the microprocessors, microcontrollers, evaluation/development boards and equipment we would use to assemble and test each of these items. In addition, we also learnt how to use the various software-based packages that would be our indispensable day-to-day tools, including, but not limited to: Sourcery G++, Tera Term, SSCOM32 and TCPUDPDbg. We were also required to develop an understanding of several widely-used communication standards/interfaces that almost all embedded systems utilise, including: RS-232, RS-485 and TCP/IP.
Each kernel of knowledge that we gained there felt like a milestone, and at each step of the way, Dr. Cheng and our work colleagues were there to give us direction, albeit in a subtle manner at times, and imbue us with a sense of purpose.
What follows is a summary of the tasks we performed and what we learnt:
Interfacing
The devices used to interface with the EM9160 evaluation board were primarily LCD screens. We used the LCD screens to familiarise ourselves with the board's peripherals and to display relevant information when necessary.
Specific Language Training
The language training we went through was primarily aimed at familiarising us with C and C++, two languages which are not altogether dissimilar.
Our training acted as a foundation on which to establish the concept of a thread of execution, or put simply, a thread. Since the utilisation of threads would be an integral part of our work, it was paramount that we understand their use in communications.
RS-232:
RS-232 is one standard of serial communication commonly used in industry due to its reliability in transmitting data packets over lengthy distances. In this case, reliability is the concept of software and hardware functioning in such a way as to reject noise interference and other impedences, in order to transmit information without intermediate corruption. This section will look at the development of a dependable serial comm. interface implemented using Soucery G++. Furthermore, an overview of one method of sending and receiving data will be incorporated.
The usefulness of RS-232 as a communication standard revolves about the idea of using computer threads to receive and transmit data packets. A thread is a unit of execution that is traceable (sequential order of execution) and part of a process.
In the application of a thread for RS-232, a receiving thread is constantly 'listening' for data packets. This is done by constant polling (for input) the serial port. Upon receiving input the data packet is stored in a buffer that can be accessed by a 'Package Processor' function in order to execute the associated command. A few of the commands defined in software were:
state: Sets the state of the General Purpose Input/Output (GPIO) pins on the EM9160 evaluation board.
monitor: Reads the state of the GPIO pins and prints it to the terminal at defined time intervals.
respond: Reads the state of the GPIO pins when prompted.
After the data packet has been processed the EM9160 returns to its receiving state to listen for more data packets.
The reliability of RS-232 rests on a certain number of parameters, in particular the method of transmission. It should be noted that the RS-232 standard is capable of sending and receiving data at various baud rates (bits/sec). Using the correct baud rate helps to deter noise interference and accumulated impedances due to varying distances in transmission. RS-232 ultimately relies on the use of start, stop and parity bits to ensure the successful transmission of data. The various bits are defined as follows:
Start bit: Marks the start of transmission to ready the receiver thread
Parity bit: Counts the number of binary 1s being sent and distinguishes between whether or not an odd or an even number of 1s is received
Stop bit: Marks the end of transmission
By familiarising one's self with the RS-232 standard, users of communication technologies can develop a foundation on which to base an understanding of alternative standards of communication. RS-232 paves the way for understanding the use of threads and other basic communication principles in other comm. technologies.
RS-485:
Electronic data communication/s between two or more nodes generally falls into two broad categories: single-ended and differential. When communicating at high data rates, or over long distances in real world environments, single-ended methods (RS-232) are often inadequate. In most applications, differential data transmission offers superior performance as differential signals help to nullify the effects of ground shifts and induced noise signals that can appear as common mode voltages on a network.
As a versatile communication standard, RS-485 is widely-used in data acquisition and control applications. Compared to the RS-232 standard, RS-485 allows for the direct connection of data terminal equipment without the need for modems as well as the connection of several nodes in a network structure. An RS-485 communication interface also enables elements, or nodes, to communicate with each other over longer distances and at faster connection rates.
Furthermore, RS-485 is able to meet the requirements for a truly multi-point communications network, with the standard specifying up to 32 drivers and 32 receivers on a single two-wire bus. With the introduction of ‘automatic’ repeaters and high-impedance drivers/receivers this ‘limitation’ can even be extended to hundreds or even thousands of nodes on a network.
By default, all the senders on the RS-485 bus are in tri-state with high impedance. In most higher level protocols, one of the nodes is defined as a master which sends queries or commands over the RS-485 bus. All other nodes receive this data and depending on the information contained in the data packet, one or more nodes on the line (if any) respond to the master.
In this ‘task’, one microcontroller was defined as the ‘master’, while a number of other microcontrollers were defined as ‘slaves’ and assigned reference numbers, i.e. Slave 0, Slave 1, etc. A communications network which utilised the RS-485 standard was then assembled. At its most basic level, upon being prompted by the user, the ‘master’ microcontroller was used to monitor, as well as set, the state of the GPIO pins of each evaluation board. Data packets sent and received by each microcontroller were also recorded in the flash memory of each microcontroller.
Circuit Analysis:
The following circuit used to send and receive messages by RS-485 has certain features that are critical to its design. Although other components of the circuit are relevant, this section of the report will focus on the following critical components.
Figure 1: The pull up and pull down resistors transmit HI when idle
The purpose of R30 and R29 are to transmit a constant high during idle periods. It can be observed from Figure 1 that R30 maintains DATA+ at a constant high voltage so as to stop noise interference being interpreted as data. However, R29 does the opposite, maintaining DATA- at a constant low whilst also minimising the effects of noise interference.
Figure 2: The function of components D12, R32 and C20 is to allow the transmission of both high and low voltage states along DATA+ and DATA-.
Figure 3: RS-485 dataframe .
According to Figure 3 the idle state is defined by both U+ and U- (DATA+ and DATA-, respectively) in an undefined state, but for the sake of simplicity, assume that DATA+ and DATA- are high and low respectively, when in idle* mode.
The idle mode is transmitted due to the pull up resistor (R34) that delivers a high voltage to pin D (Drive) at U6 depicted in Figure 2. It should be noted that the HEX inverters U1E and U1D are in place to enhance the signal. Since pin D is in a high state, DATA+ and DATA- will transmit a logical high as mentioned in Figure 1‘'s caption. However, observe that in Figure 2 pin DE (Driver Enable) is in a low state and pin ~RE/(NOT RE) (Receive Enable) is at an active low. Thus, the RS-485 is emitting a high voltage state, but is actually in receive mode.
For the RS-485 to transmit a low voltage state, DE must be in a high pin state whilst D is in low pin state. When the OUT pin at U7 in Figure 2 initiates a low voltage state, D also receives the low voltage state and trasmits to DATA+ and DATA-. However, the OUT pin is connected to both pins D and DE so it is impossible to transmit a low voltage state whilst DE is also low.
Hence, components D12, R32 and C20 are introduced to counter this problem. When OUT transmits a low voltage, U1B reciprocates this and acts as a GND level potential. But C20, having being charged during idle periods, is discharged via the diode D12 due to its forward bias properties. Furthemore, C20 is fully discharged by R77 when it drops below the 0.7V threshold. This allows U1C to transmit a high voltage although a time delay is apparent. Thus, the DE is high and D is allowed to transmit low voltages as the driver is enabled.
To transmit high voltage states along DATA+ and DATA- the RS-485 returns to idle mode for brief durations. For high voltage transmissions, R79 returns U6 to idle mode and DATA+ and DATA- being connected to pull up and pull down resistors automatically sends a high voltage state. In essence, RS-485 is in receive mode during periods of transmitting high voltages.
*NB: idle mode is equivalent to receiving mode as shown in Figure 2 because pin ~RE is active low.
Acknowledgements
Kevin and I would like to express deep gratitude to Dr. Cheng for offering us work experience at Emtronix. We would also like to extend this gratitude to Dr. Cheng’s family, for having supported us throughout our stay in Chengdu. Last, but not least, we would also like to give a heartfelt thanks to our short-term work colleagues for always being patient, understanding and helpful.
1:Elphinstone, K., Ryzhyk, L., 2011. Processes and Threads, COMP3231 Operating Systems, University of New South Wales, Available at: [Accessed Date 9 January 2012]
2:Wikipedia, 2012. RS-485. [online] Available at: [Accessed 9 January 2012]
-
嵌入式主板
+关注
关注
7文章
6084浏览量
35162
发布评论请先 登录
相关推荐
评论