你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
如何用stm32 CAN实现stm32与电脑通信
[复制链接]
zhangxm6
提问时间:2013-8-26 18:25 /
急求 如何用stm32 CAN实现stm32与电脑传输数据!!!!!! 知道麻烦回复一下,将非常感谢!有代码更好。
赞
0
收藏
0
评论
5
分享
发布时间:2013-8-26 18:25
举报
请先
登录
后回复
5个回答
fengye5340
回答时间:2013-8-31 10:07:37
a0a.1 0b0c
RE:如何用stm32 CAN实现stm32与电脑通信
PC机上没有CAN接口,直接通信不可行的,必须用一个转换模块,比如232转CAN接口, USB转CAN接口,这样才能让计算机和你的STM32 CAN接口通信,买了这样的接口后,只需要实现CAN协议代码即可
赞
0
评论
回复
支持
反对
feiante-155820
回答时间:2013-8-31 10:37:34
a0a.1 0b0c
RE:如何用stm32 CAN实现stm32与电脑通信
同意楼上的说话,应该要转换模块的
赞
0
评论
回复
支持
反对
dennywang
回答时间:2013-9-3 19:02:36
a0a.1 0b0c
RE:如何用stm32 CAN实现stm32与电脑通信
2楼正解,
赞
0
评论
回复
支持
反对
dennywang
回答时间:2013-9-5 19:04:03
a0a.1 0b0c
RE:如何用stm32 CAN实现stm32与电脑通信
http://www.zlg.cn/sitecn/CAN-bus/cate_107.html
以上是周立功公司设计的canbus转换器,各种类型的,总有一种适合你。
ps不是打广告的,挺好用
赞
0
评论
回复
支持
反对
zhangxm6
回答时间:2013-11-28 20:57:34
a0a.1 0b0c
回复:如何用stm32 CAN实现stm32与电脑通信
回复第 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]);
}
是不是哪里配置错了呢?求指教
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:如何用stm32 CAN实现stm32与电脑通信
RE:如何用stm32 CAN实现stm32与电脑通信
RE:如何用stm32 CAN实现stm32与电脑通信
RE:如何用stm32 CAN实现stm32与电脑通信
以上是周立功公司设计的canbus转换器,各种类型的,总有一种适合你。
ps不是打广告的,挺好用
回复:如何用stm32 CAN实现stm32与电脑通信
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]);
}
是不是哪里配置错了呢?求指教