diff options
author | Damien George <damien.p.george@gmail.com> | 2014-11-15 21:28:14 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-11-15 21:28:14 +0000 |
commit | d1b42d7b51c191d1ab3e44d712bc4b534b2d619e (patch) | |
tree | 0fb5770fa9cf51de6bccc17d83a3eef57c9e23dc /docs/library/pyb.CAN.rst | |
parent | 224fee0e1080fa7cd654de240c32c8433bb07cf9 (diff) | |
download | micropython-d1b42d7b51c191d1ab3e44d712bc4b534b2d619e.tar.gz micropython-d1b42d7b51c191d1ab3e44d712bc4b534b2d619e.zip |
stmhal: Improve CAN init so that it can take sjw, bs1, bs2 args.
Also update docs to explain how CAN baudrate is determined.
Diffstat (limited to 'docs/library/pyb.CAN.rst')
-rw-r--r-- | docs/library/pyb.CAN.rst | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/docs/library/pyb.CAN.rst b/docs/library/pyb.CAN.rst index 9ee5a0a695..094d263628 100644 --- a/docs/library/pyb.CAN.rst +++ b/docs/library/pyb.CAN.rst @@ -44,9 +44,32 @@ Methods Initialise the CAN bus with the given parameters: - ``mode`` is one of: NORMAL, LOOPBACK, SILENT, SILENT_LOOPBACK - - If ``extframe`` is True then the bus uses extended identifiers in the frames (29 bits). - Otherwise it uses standard 11 bit identifiers. + - if ``extframe`` is True then the bus uses extended identifiers in the frames + (29 bits); otherwise it uses standard 11 bit identifiers + - ``prescaler`` is used to set the duration of 1 time quanta; the time quanta + will be the input clock (PCLK1, see :meth:`pyb.freq()`) divided by the prescaler + - ``sjw`` is the resynchronisation jump width in units of the time quanta; + it can be 1, 2, 3, 4 + - ``bs1`` defines the location of the sample point in units of the time quanta; + it can be between 1 and 1024 inclusive + - ``bs2`` defines the location of the transmit point in units of the time quanta; + it can be between 1 and 16 inclusive + + The time quanta tq is the basic unit of time for the CAN bus. tq is the CAN + prescaler value divided by PCLK1 (the frequency of internal peripheral bus 1); + see :meth:`pyb.freq()` to determine PCLK1. + + A single bit is made up of the synchronisation segment, which is always 1 tq. + Then follows bit segment 1, then bit segment 2. The sample point is after bit + segment 1 finishes. The transmit point is after bit segment 2 finishes. + The baud rate will be 1/bittime, where the bittime is 1 + BS1 + BS2 multiplied + by the time quanta tq. + + For example, with PCLK1=42MHz, prescaler=100, sjw=1, bs1=6, bs2=8, the value of + tq is 2.38 microseconds. The bittime is 35.7 microseconds, and the baudrate + is 28kHz. + + See page 680 of the STM32F405 datasheet for more details. .. method:: can.deinit() |