1
0
Fork 0

Update docs

This commit is contained in:
Janez 2020-03-06 11:34:30 +01:00
parent a98492ecaf
commit b49907f133
2 changed files with 87 additions and 42 deletions

View file

@ -18,35 +18,34 @@ Dictionary and are accessible from both: C code and from CANopen network.
CANopenNode homepage is https://github.com/CANopenNode/CANopenNode
CANopen Features
----------------
- NMT slave to start, stop, reset device. Simple NMT master.
- Heartbeat producer/consumer error control.
- PDO linking and dynamic mapping for fast exchange of process variables.
- SDO expedited, segmented and block transfer for service access to all parameters.
- SDO master.
- Emergency message.
- Sync producer/consumer.
- Time protocol (producer/consumer).
Characteristics
---------------
### CANopen
- [NMT](https://www.can-cia.org/can-knowledge/canopen/network-management/)
slave to start, stop, reset device. Simple NMT master.
- [Heartbeat](https://www.can-cia.org/can-knowledge/canopen/error-control-protocols/)
producer/consumer error control.
- [PDO](https://www.can-cia.org/can-knowledge/canopen/pdo-protocol/) linking
and dynamic mapping for fast exchange of process variables.
- [SDO](https://www.can-cia.org/can-knowledge/canopen/sdo-protocol/) expedited,
segmented and block transfer for service access to all parameters.
- [SDO](https://www.can-cia.org/can-knowledge/canopen/sdo-protocol/) client.
- [Emergency](https://www.can-cia.org/can-knowledge/canopen/special-function-protocols/)
producer/consumer.
- [Sync](https://www.can-cia.org/can-knowledge/canopen/special-function-protocols/)
producer/consumer.
- [Time-stamp](https://www.can-cia.org/can-knowledge/canopen/special-function-protocols/)
protocol producer/consumer.
- [LSS](https://www.can-cia.org/can-knowledge/canopen/cia305/) master and
slave, LSS fastscan
### Other
- [Suitable for 16-bit microcontrollers and above](#device-support)
- [Multithreaded, real-time](#flowchart-of-a-typical-canopennode-implementation)
- [Object Dictionary editor](#object-dictionary-editor)
- Non-volatile storage.
- LSS master and slave, LSS fastscan
### RTR
RTR (remote transmission request) is a feature of CAN bus. Usage of RTR
is not recommended for CANopen and it is not implemented in CANopenNode.
### Self start
Object **0x1F80** from Object Dictionary enables the NMT slaves to start
automatically or allows it to start the whole network. It is specified in
DSP302-2 standard. Standard allows two values for slaves for object 0x1F80:
- Object 0x1F80, value = **0x8** - "NMT slave shall enter the NMT state
Operational after the NMT state Initialization autonomously (self starting)"
- Object 0x1F80, value = **0x2** - "NMT slave shall execute the NMT service
start remote node with node-ID set to 0"
Note: When node is stated (in NMT operational state), it is allowed to send or
receive Process Data Objects (PDO). If Error Register (object 0x1001) is set,
then NMT operational state is not allowed.
- [Power saving possible](#power-saving) (experimental)
- [Bootloader possible](https://github.com/CANopenNode/CANopenNode/issues/111) (for firmware update)
Documentation, support and contributions
@ -65,9 +64,9 @@ http://sourceforge.net/p/canopennode/discussion/387151/
Contributions are welcome. Best way to contribute your code is to fork
a project, modify it and then send a pull request. Some basic formatting
rules should be followed: Linux style with indentation of 4 spaces. There
is also a `codingStyle` file with example and a configuration file for
`clang-format` tool.
rules should be followed: Linux style with indentation of 4 spaces or
optionally 2 spaces. There is also a `codingStyle` file with example and
a configuration file for `clang-format` tool.
Flowchart of a typical CANopenNode implementation
@ -208,6 +207,32 @@ Interfaces to other microcontrollers are in separate projects. See
[deviceSupport.md](doc/deviceSupport.md) for list of known device interfaces.
Some details
------------
### RTR
RTR (remote transmission request) is a feature of CAN bus. Usage of RTR
is not recommended for CANopen and it is not implemented in CANopenNode.
### Self start
Object **0x1F80** from Object Dictionary enables the NMT slaves to start
automatically or allows it to start the whole network. It is specified in
DSP302-2 standard. Standard allows two values for slaves for object 0x1F80:
- Object 0x1F80, value = **0x8** - "NMT slave shall enter the NMT state
Operational after the NMT state Initialization autonomously (self starting)"
- Object 0x1F80, value = **0x2** - "NMT slave shall execute the NMT service
start remote node with node-ID set to 0"
### Error control
When node is stated (in NMT operational state), it is allowed to send or
receive Process Data Objects (PDO). If Error Register (object 0x1001) is set,
then NMT operational state is not allowed.
### Power saving
All CANopen objects calculates next timer info for OS. Calculation is based on
various timers which expire in known time. Can be used to put microcontroller
into sleep and wake at the calculated time. This is experimental.
Change Log
----------
See [CHANGELOG.md](doc/CHANGELOG.md)

View file

@ -3,7 +3,7 @@ Device Support
CANopenNode can run on many different devices. There are possible many different implementations on many different hardware, with many different development tools, by many different developers. It is not possible for single project maintainer to keep all the hardware interfaces updated. For that reason all hardware specific files are not part of the CANopenNode project.
It is necessary to implement interface to specific hardware. Interface to Linux socketCAN is part of this projects. Interfaces to other controllers are separate projects. There are interfaces to: Zephyr RTOS, PIC, Mbed-os RTOS + STM32, etc.
It is necessary to implement interface to specific hardware. Interface to Linux socketCAN is part of this projects. Interfaces to other controllers are separate projects. There are interfaces to: Zephyr RTOS, PIC, Mbed-os RTOS + STM32, NXP, etc.
Note for device driver contributors
@ -25,7 +25,7 @@ Linux
* https://github.com/CANopenNode/CANopenNode (this project).
* CANopenNode version: (will be v2.0)
* Status: stable
* Features: OD storage, SDO client
* Features: OD storage, error counters, master (SDO client, LSS master, NMT master)
* Systems: Linux PC, Raspberry PI, etc.
* Development tools: Linux
* Information updated 2020-02-14
@ -68,21 +68,41 @@ Mbed-os RTOS + STM32 (F091RC, L496ZG)
* Information updated 2020-01-21
Kinetis K20 (ARM)
-----------------
* CANopenNode driver for Teensy3 (Kinetis K20 ARM)
* https://github.com/c0d3runn3r/CANopenNode/tree/add-k20-driver, https://github.com/CANopenNode/CANopenNode/pull/28
* CANopenNode version: 83f18edc (before V1.0)
* Status: ?
* Features: ?
Kinetis K20 (NXP Arm)
---------------------
* CANopenNode driver for Teensy3 (Kinetis K20 Arm)
* Driver source: https://github.com/c0d3runn3r/CANopenNode/tree/add-k20-driver/stack/ARM_Kinetis_K20_teensy
* Discussion: https://github.com/CANopenNode/CANopenNode/pull/28
* CANopenNode version: v1.0, 2017-08-01
* Status: seems to be stable
* Features: error counters, ?
* Development tools: (see [readme](https://github.com/c0d3runn3r/CANopenNode/tree/add-k20-driver/stack/ARM_Kinetis_K20_teensy))
* Demo hardware: Teensyduino, [Teensy3](https://www.pjrc.com/store/teensy32.html)
* Information updated 2020-02-14
* Information updated 2020-03-02
S32DS (NXP S32 Design studio for Arm or Powerpc)
------------------------------------------------
* CANopenNode driver for S32DS and supported devices
* Driver source: https://github.com/bubi-soft/CANopenNode/tree/S32_SDK_support/stack/S32_SDK
* Documentation: included in driver, example available
* CANopenNode version: v1.0, 2017-08-01
* Status: seems to be stable
* Features: error counters, ?
* Development tools: [NXP S32 Design studio for Arm or Powerpc](https://www.nxp.com/design/software/development-software/s32-design-studio-ide:S32-DESIGN-STUDIO-IDE?&fsrch=1&sr=1&pageNum=1)
* Demo hardware: [S32K144EVB-Q100](https://www.nxp.com/design/development-boards/automotive-development-platforms/s32k-mcu-platforms/s32k144-evaluation-board:S32K144EVB), [DEVKIT-MPC5748G](https://www.nxp.com/design/development-boards/automotive-development-platforms/mpc57xx-mcu-platforms/mpc5748g-development-board-for-secure-gateway:DEVKIT-MPC5748G)
* Information updated 2020-03-02
Other
-----
* [STM32CubeMX HAL](https://github.com/w1ne/CANOpenNode-CubeMX-HAL), 2019-05-03, demo project for Atollic studio, tested on Nucleo STM32L452xx board.
* K64F_FreeRTOS, Kinetis SDK, 2018-02-13, [zip file](https://github.com/CANopenNode/CANopenNode/pull/28#issuecomment-365392867)
* LPC1768 (MBED) (released in 2016) - [CANopenNode v1.0](https://github.com/CANopenNode/CANopenNode/tree/v1.0), [known example from 2016](https://github.com/exmachina-dev/CANopenMbed)
Other old versions
------------------
* LPC1768 (MBED) (released in 2016) - [CANopenNode v1.0](https://github.com/CANopenNode/CANopenNode/tree/v1.0), [known example from 2016](https://github.com/exmachina-dev/CANopenMbed)
* RTOS eCos - [CANopenNode v1.0](https://github.com/CANopenNode/CANopenNode/tree/v1.0), ([released in 2013, old repo](http://sourceforge.net/p/canopennode/code_complete/))
* Atmel SAM3X - [CANopenNode v1.0](https://github.com/CANopenNode/CANopenNode/tree/v1.0), ([released in old repo](http://sourceforge.net/p/canopennode/code_complete/))
* ST STM32 - [CANopenNode v1.0](https://github.com/CANopenNode/CANopenNode/tree/v1.0), ([released in old repo](http://sourceforge.net/p/canopennode/code_complete/))