完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
PC机上没有CAN接口,直接通信不可行的,必须用一个转换模块,比如232转CAN接口, USB转CAN接口,这样才能让计算机和你的STM32 CAN接口通信,买了这样的接口后,只需要实现CAN协议代码即可
|
|
|
|
同意楼上的说话,应该要转换模块的
|
|
|
|
2楼正解,
|
|
|
|
http://www.zlg.cn/sitecn/CAN-bus/cate_107.html
以上是周立功公司设计的canbus转换器,***的,总有一种适合你。 ps不是打广告的,挺好用 |
|
|
|
回复第 2 楼 于2013-08-31 10:07:37发表:
PC机上没有CAN接口,直接通信不可行的,必须用一个转换模块,比如232转CAN接口, USB转CAN接口,这样才能让计算机和你的STM32 CAN接口通信,买了这样的接口后,只需要实现CAN协议代码即可 不好意思 很久没有进来了,这个问题已经解决了,谢谢!但是现在又出现一个新的问题了,STM32 CAN 通信中发送邮箱空中断,不管怎么样配置都进不去主要代码如下: void Can_Normal(void) { CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; CanTxMsg TxMessage; volatile u8 TransmitMailbox = 0; /* CAN register init */ CAN_DeInit(CAN1); CAN_StructInit(&CAN_InitStructure); /* CAN cell init */ CAN_InitStructure.CAN_TTCM=DISABLE; //???1ê±??′¥·¢í¨???£ê? CAN_InitStructure.CAN_ABOM=DISABLE; //???1×??ˉà????£ê? CAN_InitStructure.CAN_AWUM=DISABLE; //???1×??ˉ??D??£ê? CAN_InitStructure.CAN_NART=DISABLE; //???1·?×??ˉ??′??£ê? CAN_InitStructure.CAN_RFLM=DISABLE; //???1?óê?FIFO???¨?£ê? CAN_InitStructure.CAN_TXFP=DISABLE; //???1·¢?íFIFOó??è?? CAN_InitStructure.CAN_Mode=CAN_Mode_Normal; // CAN_Mode_Normal; CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; //ò??-????o?á? CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; CAN_InitStructure.CAN_Prescaler=5; CAN_Init(CAN1,&CAN_InitStructure); CAN_OperatingModeRequest( CAN1, CAN_OperatingMode_Normal); /* CAN filter init */ CAN_FilterInitStructure.CAN_FilterNumber=0; CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; //?á±????£ê? CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0; CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); /* transmit 1 message */ /* TxMessage.StdId=0x11; //TxMessage.ExtId=0x1234; TxMessage.IDE=CAN_ID_STD; //à??1??ê? TxMessage.RTR=CAN_RTR_DATA; //′?ê????¢μ???ààDí?aêy?Y??£¨?1óD??3ì??£? TxMessage.DLC=6; // TxMessage.Data[0]='?'; TxMessage.Data[0]=0x55; TxMessage.Data[1]=0x55; TxMessage.Data[2]=0x55; TxMessage.Data[3]=0x55; TxMessage.Data[4]=0x55; TxMessage.Data[5]=0x55; */ CAN_ITConfig(CAN1,CAN_IT_TME,ENABLE); TransmitMailbox = CAN_Transmit(CAN1,&TxMessage); // printf("receive data:0X%X,0X%X,0X%X,0X%X,0X%X,0X%X",TxMessage.Data[0], TxMessage.Data[1], TxMessage.Data[2], TxMessage.Data[3], TxMessage.Data[4], TxMessage.Data[5]); } 是不是哪里配置错了呢?求指教 |
|
|
|
一般的电脑是不支持CAN通讯的,没有相应的硬件接口,要转换一下,可以转成串口或是USB接口
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1187 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1122 浏览 2 评论
2223 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1311 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1735 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 03:58 , Processed in 0.634289 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号