This documentation is out of date.
The new version of the documentation is here: https://cannylogic.com/docs |
Difference between revisions of "CANNY 7, Dallas 1-Wire Driver"
[unchecked revision] | [unchecked revision] |
(Created page with "=== Общее описание === Контроллер CANNY7 может быть использован в качестве ведущего (MASTER) узла в одно...") |
(→Dallas 1-Wire® driver) |
||
(16 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | === | + | === General Description === |
− | + | Controller CANNY 7 can be used as a master node in a single-wire data network '''[https://en.wikipedia.org/wiki/1-Wire Dallas® 1-Wire®]''', while it has the ability to only send requests for data from slave devices. | |
− | + | Any of CANNY 7 input-output channels can be used to connect the controller to 1-Wire bus. At the same time, that channel must be externally pulled-up to 5V with resistor 3-7k Ohm. Consistently reassigning driver channels, it's possible to arrange up to 11 independent connections 1-Wire. Wherein device addressing and device handling by address is not available, therefore, in 1-Wire mode it is possible to connect only one SLAVE node at a time to controllers' channel. | |
− | + | Driver Dallas 1-Wire in its operation uses controller channels' resources, but has a higher priority than discrete input-output driver.Thus, upon activation Dallas 1-Wire driver, for channels involved in to its operation, change values in associated registers of discrete input-output driver will be ignored. | |
− | + | The slave must have a permanent, rather than parasitic power. | |
− | === | + | === Dallas 1-Wire® driver === |
− | + | Below is a description of the Dallas 1-Wire® driver registers. | |
− | + | Dallas 1-Wire® driver configuration registers. | |
− | + | To activate Dallas 1-Wire® driver, you need to select the controller channel number connected to Dallas 1-Wire® bus, in the appropriate driver register. | |
{| | {| | ||
− | |valign="top" style="padding-left:0.5em;"|'' | + | |valign="top" style="padding-left:0.5em;"|''Note:'' |
− | |valign="top" style="padding-left:0.5em;"|'' | + | |valign="top" style="padding-left:0.5em;"|''At any given time, the driver can work with only one of the connected Dallas 1-Wire® bus, when it is allowed to dynamically switch between buses in the implementation of the functional diagram.'' |
|} | |} | ||
− | + | Sent requests management to get information from the slaves and control receiving of their responses (sensors poll) is performed by appropriate registers of 1-Wire driver. | |
{| | {| | ||
− | |valign="top" style="padding-left:0.5em;"|'' | + | |valign="top" style="padding-left:0.5em;"|''Note:'' |
− | |valign="top" style="padding-left:0.5em;"|'' | + | |valign="top" style="padding-left:0.5em;"|''To avoid data loss, when working with several Dallas buses, perform switching between them only after receiving responses from the slaves requested by the controller and processing or saving the data.'' |
|} | |} | ||
− | + | Example of channel #5 configured to work with a temperature sensor DS18X20. | |
[[File:6_12_2_1.png|center|300px]] | [[File:6_12_2_1.png|center|300px]] | ||
− | + | Dallas 1-Wire® Setup Registers. | |
{|border="1" style="border-collapse:collapse;" align="left" width="100%" | {|border="1" style="border-collapse:collapse;" align="left" width="100%" | ||
|- align="center" valign="top" | |- align="center" valign="top" | ||
− | !width="250px"| | + | !width="250px"|Address |
− | ! | + | !Expected values |
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Mode Setup register |
|valign="top"| | |valign="top"| | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 46: | Line 46: | ||
|width="70px" style="padding-left:0.5em;"|1...65535 | |width="70px" style="padding-left:0.5em;"|1...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|driver activation and setting the device type (defined by a special constant of the constants directory); |
|- valign="top" | |- valign="top" | ||
|width="70px" style="padding-left:0.5em;"|0 | |width="70px" style="padding-left:0.5em;"|0 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|disconnect the channel from 1-Wire driver, return channel control to IO channels driver and allow status changing from the functional diagram. |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® IO Channel Select Register |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 59: | Line 59: | ||
|width="70px" style="padding-left:0.5em;"|0...10 | |width="70px" style="padding-left:0.5em;"|0...10 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|set the channel number used by the controller to work with Dallas 1-Wire® bus . |
|} | |} | ||
|} | |} | ||
− | + | Channel configuration to operate in this mode is set by the following named constants: | |
{|border="1" style="border-collapse:collapse;" align="left" width="100%" | {|border="1" style="border-collapse:collapse;" align="left" width="100%" | ||
|- align="center" valign="top" | |- align="center" valign="top" | ||
− | !width="250px"| | + | !width="250px"|Parameter |
− | ! | + | !List of expected values |
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® device type |
− | | | + | |DS18X20 temperature sensor, CP-Z reader in the DS1990A emulation mode, DS1990A reader |
|} | |} | ||
− | + | Dallas 1-Wire® Request Registers. | |
− | + | With the help of Dallas 1-Wire® driver request registers , the user can specify the address of respondent slave node and send a request for data transfer. | |
{|border="1" style="border-collapse:collapse;" align="left" width="100%" | {|border="1" style="border-collapse:collapse;" align="left" width="100%" | ||
|- align="center" valign="top" | |- align="center" valign="top" | ||
− | !width="250px"| | + | !width="250px"|Address |
− | ! | + | !Expected values |
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Request To Send Register |
|valign="top"| | |valign="top"| | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 90: | Line 90: | ||
|width="70px" style="padding-left:0.5em;"|1 | |width="70px" style="padding-left:0.5em;"|1 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|send a request for data to the slave; |
|- valign="top" | |- valign="top" | ||
|width="70px" style="padding-left:0.5em;"|0 | |width="70px" style="padding-left:0.5em;"|0 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|do not send a request for data to the slave. |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Requested Device ID RAW Data Register SN0:FC |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 103: | Line 103: | ||
|width="70px" style="padding-left:0.5em;"|0...65535 | |width="70px" style="padding-left:0.5em;"|0...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|register value: the lower part represent a device family identifier (FC), the upper part contains the first byte of the unique device address (SN0). |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Requested Device ID RAW Data Register SN2:SN1 |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 112: | Line 112: | ||
|width="70px" style="padding-left:0.5em;"|0...65535 | |width="70px" style="padding-left:0.5em;"|0...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|register value: the lower part contains the 2nd byte of the unique device address (SN1), the upper part contains the 3rd byte of the unique device address (SN2). |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Requested Device ID RAW Data Register SN4:SN3 |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 121: | Line 121: | ||
|width="70px" style="padding-left:0.5em;"|0...65535 | |width="70px" style="padding-left:0.5em;"|0...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|register value: the lower part contains the 4th byte of the unique device address (SN3), the upper part contains the 5th byte of the unique device address (SN4). |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Requested Device ID RAW Data Register CRC:SN5 |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 130: | Line 130: | ||
|width="70px" style="padding-left:0.5em;"|0...65535 | |width="70px" style="padding-left:0.5em;"|0...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|register value: the lower part contains the 6th byte of the unique device address (SN5), the upper part contains ROM-code addressee checksum (CRC). |
|} | |} | ||
|} | |} | ||
{| | {| | ||
− | |valign="top" style="padding-left:0.5em;"|'' | + | |valign="top" style="padding-left:0.5em;"|''Note:'' |
− | |valign="top" style="padding-left:0.5em;"|'' | + | |valign="top" style="padding-left:0.5em;"|''The setup registers of Dallas 1-Wire® 64-bit transmission destination ROM-code is only used to select a device on the Dallas 1-Wire® bus by its unique number (ROM-code), in case of multiple devices connected to the same bus. During operation with a single device on the bus, when its ROM- code unknown, set "0" value into all registers of Dallas transmission destination ROM-code.'' |
|} | |} | ||
− | + | Dallas 1-Wire® Receive Registers. | |
− | + | During its operation, upon reception of responses from the slave devices to the controller data requests, according to Dallas 1-Wire® driver configuration, stored in its corresponding receiving registers. | |
− | + | General receive registers. | |
{|border="1" style="border-collapse:collapse;" align="left" width="100%" | {|border="1" style="border-collapse:collapse;" align="left" width="100%" | ||
|- align="center" valign="top" | |- align="center" valign="top" | ||
− | !width="250px"| | + | !width="250px"|Address |
− | ! | + | !Return values |
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Data Set Ready Register |
|valign="top"| | |valign="top"| | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 157: | Line 157: | ||
|width="70px" style="padding-left:0.5em;"|1 | |width="70px" style="padding-left:0.5em;"|1 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|successfully received data from the slave node and it is available in Dallas 1-Wire® driver read registers; |
|- valign="top" | |- valign="top" | ||
|width="70px" style="padding-left:0.5em;"|0 | |width="70px" style="padding-left:0.5em;"|0 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|there is no actual data in the driver receive buffer. |
|} | |} | ||
|} | |} | ||
− | + | iButton® DS1990A Receive Mode Registers. | |
{|border="1" style="border-collapse:collapse;" align="left" width="100%" | {|border="1" style="border-collapse:collapse;" align="left" width="100%" | ||
|- align="center" valign="top" | |- align="center" valign="top" | ||
− | !width="250px"| | + | !width="250px"|Address |
− | ! | + | !Return values |
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Received Raw Data Register D0:FC |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 179: | Line 179: | ||
|width="70px" style="padding-left:0.5em;"|0...65535 | |width="70px" style="padding-left:0.5em;"|0...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|register value: lower part contains family key identifier (FC), higher part contains the first byte of unique key address (SN0). |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Received Raw Data Register D2:D1 |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 188: | Line 188: | ||
|width="70px" style="padding-left:0.5em;"|0...65535 | |width="70px" style="padding-left:0.5em;"|0...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|register value: lower part contains the second byte of unique key address (SN1), higher part contains the third byte of unique key address (SN2). |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Received Raw Data Register D4:D3 |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 197: | Line 197: | ||
|width="70px" style="padding-left:0.5em;"|0...65535 | |width="70px" style="padding-left:0.5em;"|0...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|register value: lower part contains the forth byte of unique key address (SN3), higher part contains the fifth byte of unique key address (SN4). |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |Dallas 1-Wire® Received Raw Data Register CRC:D5 |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 206: | Line 206: | ||
|width="70px" style="padding-left:0.5em;"|0...65535 | |width="70px" style="padding-left:0.5em;"|0...65535 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|register value: lower part contains the sixth byte of unique key address (SN5), higher part contains key checksum ROM-code (CRC). |
|} | |} | ||
|} | |} | ||
− | + | DS18X20 Receive Mode Registers. | |
{|border="1" style="border-collapse:collapse;" align="left" width="100%" | {|border="1" style="border-collapse:collapse;" align="left" width="100%" | ||
|- align="center" valign="top" | |- align="center" valign="top" | ||
− | !width="250px"| | + | !width="250px"|Address |
− | ! | + | !Returning values |
|- valign="top" | |- valign="top" | ||
− | | | + | |DS18X20 Received Temperature Data Register: Integer Part |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 224: | Line 224: | ||
|width="70px" style="padding-left:0.5em;"|0...125 | |width="70px" style="padding-left:0.5em;"|0...125 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|modulo of integer part of temperature value measured by the sensor. |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |DS18X20 Received Temperature Data Register: Fractional Part ( x 0.0001) |
| | | | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 233: | Line 233: | ||
|width="70px" style="padding-left:0.5em;"|0...9999 | |width="70px" style="padding-left:0.5em;"|0...9999 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|modulo of decimal part of temperature value measured by the sensor. |
|} | |} | ||
|- valign="top" | |- valign="top" | ||
− | | | + | |DS18X20 Received Temperature Data Register: Sign (0 = above zero; 1 = below zero) |
|valign="top"| | |valign="top"| | ||
{|border="0" align="left" | {|border="0" align="left" | ||
Line 242: | Line 242: | ||
|width="70px" style="padding-left:0.5em;"|0 | |width="70px" style="padding-left:0.5em;"|0 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|the temperature measured by the sensor is above zero; |
|- valign="top" | |- valign="top" | ||
|width="70px" style="padding-left:0.5em;"|1 | |width="70px" style="padding-left:0.5em;"|1 | ||
|style="padding-left:0.5em;"|= | |style="padding-left:0.5em;"|= | ||
− | |style="padding-left:0.5em;"| | + | |style="padding-left:0.5em;"|the temperature measured by the sensor is below zero. |
|} | |} | ||
|} | |} | ||
+ | {| | ||
+ | |valign="top" style="padding-left:0.5em;"|''Note:'' | ||
+ | |valign="top" style="padding-left:0.5em;"|''When receiving in DS18X20 mode, temperature sensor duty cycle, those send requests via Dallas transmission start register, should not be less than 750ms.'' | ||
+ | |} | ||
− | + | Example of a functional diagram working with DS18X20 temperature sensor. | |
[[File:6_12_2_2.png|center]] | [[File:6_12_2_2.png|center]] | ||
− | + | temperature sensor poll, connected to the channel #5, carried out 1 time per second. When receiving data from DS18X20, in Dallas 1-Wire® Data Set Ready Register appears value "1" and data from the temperature reading registers, with help of D flip-flops, is stored in respective named networks for further processing. | |
+ | |||
+ | Sensor connection circuit. | ||
+ | |||
+ | [[File:6_12_2_3.png|800px|center]] | ||
− | == | + | == See also == |
[[CANNY 7]] | [[CANNY 7]] | ||
− | [[ | + | [[CANNY 7, I²C Driver]] |
Latest revision as of 13:15, 5 February 2018
General Description
Controller CANNY 7 can be used as a master node in a single-wire data network Dallas® 1-Wire®, while it has the ability to only send requests for data from slave devices.
Any of CANNY 7 input-output channels can be used to connect the controller to 1-Wire bus. At the same time, that channel must be externally pulled-up to 5V with resistor 3-7k Ohm. Consistently reassigning driver channels, it's possible to arrange up to 11 independent connections 1-Wire. Wherein device addressing and device handling by address is not available, therefore, in 1-Wire mode it is possible to connect only one SLAVE node at a time to controllers' channel.
Driver Dallas 1-Wire in its operation uses controller channels' resources, but has a higher priority than discrete input-output driver.Thus, upon activation Dallas 1-Wire driver, for channels involved in to its operation, change values in associated registers of discrete input-output driver will be ignored.
The slave must have a permanent, rather than parasitic power.
Dallas 1-Wire® driver
Below is a description of the Dallas 1-Wire® driver registers.
Dallas 1-Wire® driver configuration registers.
To activate Dallas 1-Wire® driver, you need to select the controller channel number connected to Dallas 1-Wire® bus, in the appropriate driver register.
Note: | At any given time, the driver can work with only one of the connected Dallas 1-Wire® bus, when it is allowed to dynamically switch between buses in the implementation of the functional diagram. |
Sent requests management to get information from the slaves and control receiving of their responses (sensors poll) is performed by appropriate registers of 1-Wire driver.
Note: | To avoid data loss, when working with several Dallas buses, perform switching between them only after receiving responses from the slaves requested by the controller and processing or saving the data. |
Example of channel #5 configured to work with a temperature sensor DS18X20.
Dallas 1-Wire® Setup Registers.
Address | Expected values | ||||||
---|---|---|---|---|---|---|---|
Dallas 1-Wire® Mode Setup register |
| ||||||
Dallas 1-Wire® IO Channel Select Register |
|
Channel configuration to operate in this mode is set by the following named constants:
Parameter | List of expected values |
---|---|
Dallas 1-Wire® device type | DS18X20 temperature sensor, CP-Z reader in the DS1990A emulation mode, DS1990A reader |
Dallas 1-Wire® Request Registers.
With the help of Dallas 1-Wire® driver request registers , the user can specify the address of respondent slave node and send a request for data transfer.
Address | Expected values | ||||||
---|---|---|---|---|---|---|---|
Dallas 1-Wire® Request To Send Register |
| ||||||
Dallas 1-Wire® Requested Device ID RAW Data Register SN0:FC |
| ||||||
Dallas 1-Wire® Requested Device ID RAW Data Register SN2:SN1 |
| ||||||
Dallas 1-Wire® Requested Device ID RAW Data Register SN4:SN3 |
| ||||||
Dallas 1-Wire® Requested Device ID RAW Data Register CRC:SN5 |
|
Note: | The setup registers of Dallas 1-Wire® 64-bit transmission destination ROM-code is only used to select a device on the Dallas 1-Wire® bus by its unique number (ROM-code), in case of multiple devices connected to the same bus. During operation with a single device on the bus, when its ROM- code unknown, set "0" value into all registers of Dallas transmission destination ROM-code. |
Dallas 1-Wire® Receive Registers.
During its operation, upon reception of responses from the slave devices to the controller data requests, according to Dallas 1-Wire® driver configuration, stored in its corresponding receiving registers.
General receive registers.
Address | Return values | ||||||
---|---|---|---|---|---|---|---|
Dallas 1-Wire® Data Set Ready Register |
|
iButton® DS1990A Receive Mode Registers.
Address | Return values | |||
---|---|---|---|---|
Dallas 1-Wire® Received Raw Data Register D0:FC |
| |||
Dallas 1-Wire® Received Raw Data Register D2:D1 |
| |||
Dallas 1-Wire® Received Raw Data Register D4:D3 |
| |||
Dallas 1-Wire® Received Raw Data Register CRC:D5 |
|
DS18X20 Receive Mode Registers.
Address | Returning values | ||||||
---|---|---|---|---|---|---|---|
DS18X20 Received Temperature Data Register: Integer Part |
| ||||||
DS18X20 Received Temperature Data Register: Fractional Part ( x 0.0001) |
| ||||||
DS18X20 Received Temperature Data Register: Sign (0 = above zero; 1 = below zero) |
|
Note: | When receiving in DS18X20 mode, temperature sensor duty cycle, those send requests via Dallas transmission start register, should not be less than 750ms. |
Example of a functional diagram working with DS18X20 temperature sensor.
temperature sensor poll, connected to the channel #5, carried out 1 time per second. When receiving data from DS18X20, in Dallas 1-Wire® Data Set Ready Register appears value "1" and data from the temperature reading registers, with help of D flip-flops, is stored in respective named networks for further processing.
Sensor connection circuit.