如何用stm32 CAN实现stm32与电脑通信
急求 如何用stm32 CAN实现stm32与电脑传输数据!!!!!! 知道麻烦回复一下,将非常感谢!有代码更好。RE:如何用stm32 CAN实现stm32与电脑通信
PC机上没有CAN接口,直接通信不可行的,必须用一个转换模块,比如232转CAN接口, USB转CAN接口,这样才能让计算机和你的STM32 CAN接口通信,买了这样的接口后,只需要实现CAN协议代码即可RE:如何用stm32 CAN实现stm32与电脑通信
同意楼上的说话,应该要转换模块的RE:如何用stm32 CAN实现stm32与电脑通信
2楼正解,:DRE:如何用stm32 CAN实现stm32与电脑通信
http://www.zlg.cn/sitecn/CAN-bus/cate_107.html以上是周立功公司设计的canbus转换器,各种类型的,总有一种适合你。
ps不是打广告的,挺好用
回复:如何用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='?';
TxMessage.Data=0x55;
TxMessage.Data=0x55;
TxMessage.Data=0x55;
TxMessage.Data=0x55;
TxMessage.Data=0x55;
TxMessage.Data=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, TxMessage.Data, TxMessage.Data, TxMessage.Data, TxMessage.Data, TxMessage.Data);
}
是不是哪里配置错了呢?求指教
页:
[1]