CAN bus implementation on HADControl
The objective of this project is the implementation of a software on the HADCon(trol) board's AVR micro controller. This software enables the control of AVR micro controller's CANbus Interface using an (ASCII based) Application Programming Interface (API). Integrated via streamDevice driver into EPICS the control of CANbus devices will be possible within EPICS.
The HADControl is a board which has been developped at the GSI. It consists of the following components:
- AVR micro controller
- ETRAX SoC
- CAN connector
- RJ45 10MBit/s Ethernet
- JTAG interface
The HADControl board provides a CAN interface and a TCP/IP interface. This involves the communication of the two units SoC and microcontroller over an internal serial interface.
The HADControl Board needs a minimal input voltage of 5V. The CAN cable is inserted in CAN connector. The CAN cable connects the board with the controlled device. At both ends of the cable should be a 120 Ohm resistor to be completed.The AVR ICEmkII debug device is connected to the board's JTAG port.
How is hardware setup installed?
The CAN_API-Slave is the program for the execution of the commands from micro controller to CAN devices via CAN bus.
Open a console
The CAN_API-Master is the program for sending commands from micro controller to SoC via serial interface. The execution of the program consist of two parts.
Open the first console
gcc-cris -mlinux API-Master.c -o API-Master
lcd put CAN_API-Script.sh
Open the second console
./ _API-Master "command"
- Example of Etrax-number: etrax243
- Example of command: SEND 304 0 1 8
Before you start, you'll need
- Compiler & Cross Compiler
A compiler is a computer program that transforms the source code written in a computer language into another computer language. The most common reason for transform source code is to create an executable program.
A cross compiler is a compiler capable of creating a code for a platform other than the one on which the compiler runs. Cross compiler tools are generally found in use to generate executables for embedded system or multiple platforms.
The CRIS architecture is the cross compiler for SoC.
A Software Development Kit(SDK)is a set of development tools that allows a software engineer to create applications for a certain software package, a hardware platform and a computer system. SDK also frequently includes a sample code and supporting technical information or other supporting documentation to clarify points from the primary reference material.
A micro controller is a small computer on a single integrated circuit consisting of a relatively simple CPU combined with support functions such as a crystal oscillator, timers, serial and analog I/O etc.
The micro-controller on the HADControl board is AT90CAN128
, this is an AVR micro controller of ATMEL. He is an 8 Bit micro controller with many interfaces other CAN and serial interfaces. This micro controller consists of 128 kBytes FLASH, 4 kBytes RAM and 4 kBytes EEPROM.
The ETRAX SoC (Ethernet Token Ring Axis System on Chip) is a Central Processing Unit(CPU) of the company AXIS communication,with, 4 MB FLASH, 10/100 MBits/s Ethernet and four serial ports with high speed.
The SoC(CPU)can be adressed via TCP/IP. The communication between EPICS and HADControl-Board or SoC is over TCP/IP.
The implemented API is CAN_API and is addressed and read via the serial interface between the microcontroller and CPU.
The API consists of two parts, one is the APIMaster. This API-Master is a program that uses the API and knows the protocol. It runs on the CPU, and has to send mainly the commands over a serial interface from the CPU to the microcontroller.The second part is a API-Slave, this runs of the microcontroller and processes the commands and CAN data arriving at the CPU.
- Implementation of CAN_API-Slave
The implementation of CAN_API-Slave must be loaded and run in the microcontroller. This has two main roles. One is that it be receives commands from the CPU for ationinterpret and implementation. On the other hand the arriving data of CAN devices are packed in a CAN_API structure and manages at the CPU .
- Implementation of CAN_API-Master
The implementation of CAN_API-Master must be charged and must run in the CPU. The program is for the communication between the CPU and the microcontroller via serial interface.The program is independent of EPICS.
EPICS stand for Experimental Physics and Industrial Control System.
The EPICS is an control system with following components:
- It is a control system architecture: A client/server model with an efficient communication protocol(channel access) for passing data.
- A Software Toolkit: A collection of software tools collaboratively developed which can be integrated to provide a comprehensive and scalable.
- Input Output Control Server: A computer running iocCore, a set of EPICS routines used to define process variables and implement real-time control algorithms. The iocCore uses database records to define process variables and their behaviour.
Open a console and to log on linux computer
With the help of dbl gives different PV in action
Open a new console
caput axis:off.PROC 1
off is the name of a PV in action.
With the help of camonitor command, you can view the result.
STREAM is a general EPICS Device Support for devices with a Byte Stream. It controls the sending and receiving of strings, including non-printable characters and null bytes. An example of this type of communication is the serial communication. STREAM Device uses the interface of the ASYNdriver, the ASYNdriver performs the low-level support for this communication. It supports all standard record types of EPICS.
ASYNdriver is the EPICS Device support for asynchronous communication.
For the current version, go to hadcon
How to use the CAN_API-Script
The CAN_API-Script contains some commands. Now is the command a name and no longer a string. You need no longer the CAN_API-Master to run but the CAN_API-Script.
Open a new console and call a terminal emulator.
xterm -e bin/trb etrax043
Run the script on the the terminal emulator.
IDstat is a name that contains the string: IDstat = "SEND 4 0 1 8". To show the other name of command open the script CAN_API-Script.sh
The CAN_API-Script.pdf is a summary of commands with a brief description and examples of responses expected. For more information open the file CAN_API-Script.pdf
check the settings of the serial communication
If the program doesn't respond during testing, switch off and follow instruction below.
1- Open a new console
2- Enter ==trb etrax-number==
stty -F /dev/ttyS1
to have the Baud rate of the serial interface
4- If the Baud rate is not equal 115200, adjust these values with ==sttyF /dev/ttyS1 115200==
Settings for communication via CAN bus
Be soldered for communication via the CAN bus must have a 120Ohm resistance at the JCAN1 plug of HadControl
The resistor is located between pin 1 and pin 2.
Diploma Thesis Linda Fouedjio
For more information about the project can be found in my Diploma thesis
As a result of this work Linda Fouedjio graduated with a diploma in Electrical Engineering and Information Technology at the University of Applied Science in Darmstadt.
- 17 november 2009