MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / bxcan_init

Function bxcan_init

bsp/loongson/ls1cdev/drivers/drv_can.c:123–217  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

121}
122
123static void bxcan_init(CAN_TypeDef *pcan, rt_uint32_t baud, rt_uint32_t mode)
124{
125 CAN_InitTypeDef CAN_InitStructure;
126
127 Ls1c_CanBPS_t bps ;
128
129 switch(baud)
130 {
131 case CAN1MBaud:
132 bps = LS1C_CAN1MBaud;
133 break;
134 case CAN800kBaud:
135 bps = LS1C_CAN800kBaud;
136 break;
137 case CAN500kBaud:
138 bps = LS1C_CAN500kBaud;
139 break;
140 case CAN250kBaud:
141 bps = LS1C_CAN250kBaud;
142 break;
143 case CAN125kBaud:
144 bps = LS1C_CAN125kBaud;
145 break;
146 case CAN50kBaud:
147 bps = LS1C_CAN40kBaud;
148 break;
149 default:
150 bps = LS1C_CAN250kBaud;
151 break;
152 }
153
154 switch (mode)
155 {
156 case RT_CAN_MODE_NORMAL:
157 CAN_InitStructure.CAN_Mode = 0x00;
158 break;
159 case RT_CAN_MODE_LISTEN:
160 CAN_InitStructure.CAN_Mode = CAN_Mode_LOM;
161 break;
162 case RT_CAN_MODE_LOOPBACK:
163 CAN_InitStructure.CAN_Mode = CAN_Mode_STM;
164
165 break;
166 case RT_CAN_MODE_LOOPBACKANLISTEN:
167 CAN_InitStructure.CAN_Mode = CAN_Mode_STM|CAN_Mode_LOM;
168 break;
169 }
170 CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
171
172 switch (bps)
173 {
174 case LS1C_CAN1MBaud:
175 CAN_InitStructure.CAN_Prescaler = 9;
176 CAN_InitStructure.CAN_BS1 = CAN_BS1_4tq;
177 CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq;
178 break;
179 case LS1C_CAN800kBaud:
180 CAN_InitStructure.CAN_Prescaler = 8;

Callers 1

configureFunction · 0.70

Calls 1

CAN_InitFunction · 0.50

Tested by

no test coverage detected