Lines Matching refs:can_dev
123 struct swm_can_device *can_dev; in swm_can_config() local
129 can_dev = (struct swm_can_device *)can_device->parent.user_data; in swm_can_config()
130 RT_ASSERT(can_dev); in swm_can_config()
150 CAN_Close(can_dev->can_cfg->CANx); //一些关键寄存器只能在CAN关闭时设置 in swm_can_config()
152 can_dev->can_cfg->CANx->CR &= ~(CAN_CR_LOM_Msk | CAN_CR_STM_Msk); in swm_can_config()
153 can_dev->can_cfg->CANx->CR |= (can_mode << CAN_CR_LOM_Pos); in swm_can_config()
155 can_dev->can_cfg->CANx->BT1 = (0 << CAN_BT1_SAM_Pos) | in swm_can_config()
159 can_dev->can_cfg->CANx->BT0 = (BAUD_DATA(SJW, baud_index) << CAN_BT0_SJW_Pos) | in swm_can_config()
162 can_dev->can_cfg->CANx->BT2 = ((BAUD_DATA(PRESCL, baud_index) >> 6) << CAN_BT2_BRP_Pos); in swm_can_config()
164 can_dev->can_cfg->CANx->RXERR = 0; //只能在复位模式下清除 in swm_can_config()
165 can_dev->can_cfg->CANx->TXERR = 0; in swm_can_config()
168 CAN_Open(can_dev->can_cfg->CANx); in swm_can_config()
176 struct swm_can_device *can_dev; in swm_can_control() local
180 can_dev = (struct swm_can_device *)can_device->parent.user_data; in swm_can_control()
181 RT_ASSERT(can_dev != RT_NULL); in swm_can_control()
189 can_dev->can_cfg->CANx->IE &= ~(CAN_IE_RXDA_Msk | CAN_IE_RXOV_Msk); in swm_can_control()
193 can_dev->can_cfg->CANx->IE &= ~CAN_IE_TXBR_Msk; in swm_can_control()
197 …can_dev->can_cfg->CANx->IE &= ~(CAN_IE_ARBLOST_Msk | CAN_IE_BUSERR_Msk | CAN_IE_ERRWARN_Msk | CAN_… in swm_can_control()
204 can_dev->can_cfg->CANx->IE |= (CAN_IE_RXDA_Msk | CAN_IE_RXOV_Msk); in swm_can_control()
208 can_dev->can_cfg->CANx->IE |= CAN_IE_TXBR_Msk; in swm_can_control()
212 …can_dev->can_cfg->CANx->IE |= (CAN_IE_ARBLOST_Msk | CAN_IE_BUSERR_Msk | CAN_IE_ERRWARN_Msk | CAN_I… in swm_can_control()
240 can_dev->can_cfg->CANx->AFM &= ~(1 << filter_idx); in swm_can_control()
242 can_dev->can_cfg->CANx->ACR[filter_idx] = __REV(filter_cfg->items[i].id << 5); in swm_can_control()
243 … can_dev->can_cfg->CANx->AMR[filter_idx] = __REV(~(filter_cfg->items[i].mask << 5)); in swm_can_control()
245 can_dev->can_cfg->CANx->AFE |= (1 << filter_idx); in swm_can_control()
249 can_dev->can_cfg->CANx->AFM |= (1 << filter_idx); in swm_can_control()
251 can_dev->can_cfg->CANx->ACR[filter_idx] = __REV(filter_cfg->items[i].id << 3); in swm_can_control()
252 … can_dev->can_cfg->CANx->AMR[filter_idx] = __REV(~(filter_cfg->items[i].mask << 3)); in swm_can_control()
254 can_dev->can_cfg->CANx->AFE |= (1 << filter_idx); in swm_can_control()
269 if (argval != can_dev->can_device.config.mode) in swm_can_control()
271 can_dev->can_device.config.mode = argval; in swm_can_control()
272 return swm_can_config(&can_dev->can_device, &can_dev->can_device.config); in swm_can_control()
289 if (argval != can_dev->can_device.config.baud_rate) in swm_can_control()
291 can_dev->can_device.config.baud_rate = argval; in swm_can_control()
292 return swm_can_config(&can_dev->can_device, &can_dev->can_device.config); in swm_can_control()
302 if (argval != can_dev->can_device.config.privmode) in swm_can_control()
304 can_dev->can_device.config.privmode = argval; in swm_can_control()
305 return swm_can_config(&can_dev->can_device, &can_dev->can_device.config); in swm_can_control()
310 can_dev->can_device.status.rcverrcnt = can_dev->can_cfg->CANx->RXERR; in swm_can_control()
311 can_dev->can_device.status.snderrcnt = can_dev->can_cfg->CANx->TXERR; in swm_can_control()
312 can_dev->can_device.status.lasterrtype = (can_dev->can_cfg->CANx->ECC >> 6) & 0x03; in swm_can_control()
313 can_dev->can_device.status.errcode = can_dev->can_cfg->CANx->ECC & 0x1F; in swm_can_control()
314 rt_memcpy(arg, &can_dev->can_device.status, sizeof(can_dev->can_device.status)); in swm_can_control()
325 struct swm_can_device *can_dev; in swm_can_sendmsg() local
328 can_dev = (struct swm_can_device *)can_device->parent.user_data; in swm_can_sendmsg()
333 can_dev->can_cfg->CANx->FRAME.DATA[0] = pmsg->id >> 3; in swm_can_sendmsg()
334 can_dev->can_cfg->CANx->FRAME.DATA[1] = pmsg->id << 5; in swm_can_sendmsg()
338 can_dev->can_cfg->CANx->FRAME.INFO = (0 << CAN_INFO_FF_Pos) | in swm_can_sendmsg()
344 can_dev->can_cfg->CANx->FRAME.DATA[i+2] = pmsg->data[i]; in swm_can_sendmsg()
347 if(can_dev->can_cfg->CANx->CR & CAN_CR_STM_Msk) in swm_can_sendmsg()
349 can_dev->can_cfg->CANx->CMD = (1 << CAN_CMD_SRR_Pos); in swm_can_sendmsg()
353 can_dev->can_cfg->CANx->CMD = (1 << CAN_CMD_TXREQ_Pos); in swm_can_sendmsg()
358 can_dev->can_cfg->CANx->FRAME.INFO = (0 << CAN_INFO_FF_Pos) | in swm_can_sendmsg()
362 can_dev->can_cfg->CANx->CMD = (1 << CAN_CMD_TXREQ_Pos); in swm_can_sendmsg()
367 can_dev->can_cfg->CANx->FRAME.DATA[0] = pmsg->id >> 21; in swm_can_sendmsg()
368 can_dev->can_cfg->CANx->FRAME.DATA[1] = pmsg->id >> 13; in swm_can_sendmsg()
369 can_dev->can_cfg->CANx->FRAME.DATA[2] = pmsg->id >> 5; in swm_can_sendmsg()
370 can_dev->can_cfg->CANx->FRAME.DATA[3] = pmsg->id << 3; in swm_can_sendmsg()
374 can_dev->can_cfg->CANx->FRAME.INFO = (1 << CAN_INFO_FF_Pos) | in swm_can_sendmsg()
380 can_dev->can_cfg->CANx->FRAME.DATA[i+4] = pmsg->data[i]; in swm_can_sendmsg()
383 if(can_dev->can_cfg->CANx->CR & CAN_CR_STM_Msk) in swm_can_sendmsg()
385 can_dev->can_cfg->CANx->CMD = (1 << CAN_CMD_SRR_Pos); in swm_can_sendmsg()
389 can_dev->can_cfg->CANx->CMD = (1 << CAN_CMD_TXREQ_Pos); in swm_can_sendmsg()
394 can_dev->can_cfg->CANx->FRAME.INFO = (1 << CAN_INFO_FF_Pos) | in swm_can_sendmsg()
398 can_dev->can_cfg->CANx->CMD = (1 << CAN_CMD_TXREQ_Pos); in swm_can_sendmsg()
407 struct swm_can_device *can_dev; in swm_can_recvmsg() local
409 can_dev = (struct swm_can_device *)can_device->parent.user_data; in swm_can_recvmsg()
416 CAN_Receive(can_dev->can_cfg->CANx, &CAN_RXMsg); in swm_can_recvmsg()
458 struct swm_can_device *can_dev; in swm_can_isr() local
460 can_dev = (struct swm_can_device *)can_device->parent.user_data; in swm_can_isr()
462 uint32_t int_sr = CAN_INTStat(can_dev->can_cfg->CANx); in swm_can_isr()