Skip to content

Commit d290d93

Browse files
Shaoyuhardbyte
authored andcommitted
add timing register table
1 parent e5cede3 commit d290d93

1 file changed

Lines changed: 30 additions & 31 deletions

File tree

can/interfaces/canalystii.py

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,27 @@ class VCI_CAN_OBJ(Structure):
3333
STATUS_OK = 0x01
3434
STATUS_ERR = 0x00
3535

36+
TIMING_DICT = {
37+
5000: (0xBF, 0xFF),
38+
10000: (0x31, 0x1C),
39+
20000: (0x18, 0x1C),
40+
33330: (0x09, 0x6F),
41+
40000: (0x87, 0xFF),
42+
50000: (0x09, 0x1C),
43+
66660: (0x04, 0x6F),
44+
80000: (0x83, 0xFF),
45+
83330: (0x03, 0x6F),
46+
100000: (0x04, 0x1C),
47+
125000: (0x03, 0x1C),
48+
200000: (0x81, 0xFA),
49+
250000: (0x01, 0x1C),
50+
400000: (0x80, 0xFA),
51+
500000: (0x00, 0x1C),
52+
666000: (0x80, 0xB6),
53+
800000: (0x00, 0x16),
54+
1000000: (0x00, 0x14),
55+
}
56+
3657
try:
3758
if platform.system() == "Windows":
3859
CANalystII = WinDLL("./ControlCAN.dll")
@@ -45,7 +66,7 @@ class VCI_CAN_OBJ(Structure):
4566

4667

4768
class CANalystIIBus(BusABC):
48-
def __init__(self, channel, device=0, baud=10000000, Timing0=0x00, Timing1=0x14, can_filters=None):
69+
def __init__(self, channel, device=0, baud=None, Timing0=None, Timing1=None, can_filters=None):
4970
"""
5071
5172
:param channel: channel number
@@ -69,36 +90,14 @@ def __init__(self, channel, device=0, baud=10000000, Timing0=0x00, Timing1=0x14,
6990

7091
self.channel_info = "CANalyst-II: device {}, channels {}".format(self.device, self.channels)
7192

72-
if baud == 1000000:
73-
Timing0, Timing1 = (0x00, 0x14)
74-
elif baud == 800000:
75-
Timing0, Timing1 = (0x00, 0x16)
76-
elif baud == 666000:
77-
Timing0, Timing1 = (0x80, 0xB6)
78-
elif baud == 500000:
79-
Timing0, Timing1 = (0x00, 0x1C)
80-
elif baud == 400000:
81-
Timing0, Timing1 = (0x80, 0xFA)
82-
elif baud == 250000:
83-
Timing0, Timing1 = (0x01, 0x1C)
84-
elif baud == 200000:
85-
Timing0, Timing1 = (0x81, 0xFA)
86-
elif baud == 125000:
87-
Timing0, Timing1 = (0x03, 0x1C)
88-
elif baud == 100000:
89-
Timing0, Timing1 = (0x04, 0x1C)
90-
elif baud == 80000:
91-
Timing0, Timing1 = (0x83, 0xFF)
92-
elif baud == 50000:
93-
Timing0, Timing1 = (0x09, 0x1C)
94-
elif baud == 40000:
95-
Timing0, Timing1 = (0x87, 0xFF)
96-
elif baud == 20000:
97-
Timing0, Timing1 = (0x18, 0x1C)
98-
elif baud == 10000:
99-
Timing0, Timing1 = (0x31, 0x1C)
100-
elif baud == 5000:
101-
Timing0, Timing1 = (0xBF, 0xFF)
93+
if baud is not None:
94+
try:
95+
Timing0, Timing1 = TIMING_DICT[baud]
96+
except KeyError:
97+
raise ValueError("Baudrate is not supported")
98+
99+
if Timing0 is None or Timing1 is None:
100+
raise ValueError("Timing registers are not set")
102101

103102
self.init_config = VCI_INIT_CONFIG(0, 0xFFFFFFFF, 0, 1, Timing0, Timing1, 0)
104103

0 commit comments

Comments
 (0)