久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
CAN通信CANBUSV1.3程序 CP2102芯片
[打印本頁]
作者:
kaidilake
時間:
2017-4-26 08:51
標題:
CAN通信CANBUSV1.3程序 CP2102芯片
1.安裝方法,CAN分析儀插入電腦,安裝CP2102芯片的驅動程序。安裝完畢打開AccessPort.exe串口調試助手,波特率設置為256000。接收區域設置為“字符顯示”
注:發送指令最好使用快捷鍵F10 ,避免接收數據過程中,軟件按鈕不夠靈敏。
2.關于CAN標識符 效驗碼和屏蔽碼的關系舉例如下:
例:
采集標識為066 067 068 069多標識500K速率的標準CAN數據
STD04 066 068 7FE 7FE
根據十六進制把標識分解二進制如下
8 4 2 1 8 4 2 1 8 4 2 1
0 0 0 0 0 1 1 0 0 1 1 0 ID:066
0 0 0 0 0 1 1 0 0 1 1 1 ID:067
0 0 0 0 0 1 1 0 1 0 0 0 ID:068
0 0 0 0 0 1 1 0 1 0 0 1 ID:069
發揮雙濾波的作用,把上述ID分為兩組。
第一組
0 0 0 0 0 1 1 0 0 1 1 0 ID:066
0 0 0 0 0 1 1 0 0 1 1 1 ID:067
第二組
0 0 0 0 0 1 1 0 1 0 0 0 ID:068
0 0 0 0 0 1 1 0 1 0 0 1 ID:069
第一組相同的位為
0 0 0 0 0 1 1 0 0 1 1 X ID:066
0 0 0 0 0 1 1 0 0 1 1 X ID:067
X先認為是0吧,即效驗碼為 066.
X屏蔽碼中也認為是0,其它為1,所以屏蔽碼為7FE
第二組相同的位為
0 0 0 0 0 1 1 0 1 0 0 X ID:068
0 0 0 0 0 1 1 0 1 0 0 X ID:069
X先認為是0吧,即效驗碼為 068
X屏蔽碼中也認為是0,其它為1,所以屏蔽碼為7FE
屏蔽碼一個位是1的時候,是必須比較該位的意思,某些CAN控制器則相反,只是把7FE反過來001作為屏蔽碼?梢哉J為 (線上的CAN ID & 屏蔽碼(某些芯片屏蔽碼要取反)) == 效驗碼 則該數據允許接收。
stm32單片機源程序:
#include "stm32f10x.h"
#include "includes.h"
#include "string.h"
u8 Check_Number(u8 checkdata);
u8 ASCII_4BIT(u8 data);
__IO u8 DisRAM[50];
__IO RAMVale SRAMCOUNT;
int main(void)
{
CanTxMsg TxMessage;
__IO CanRxMsg RxMessage;
uint8_t i,TransmitMailbox;
u16 ID1,ID2,MID1,MID2;
u32 id1,id2,mid1,mid2;
BSP_Init();
SRAMCOUNT.TURN = 0;
while(1)
{
if ((CotrolVale & 0x01) == 0x01)
{
printf("*****************************************你大爺*****************************************\n");
printf("網址:http://shop107599058.taobao.com \n");
printf("產品名:CAN分析儀 \n");
printf("使用說明: \n");
printf("1.標準CAN數據采集方法 \n");
printf(" CAN速率 效驗位2 屏蔽位2 CAN速率: 2000000 / CAN速率 = xx \n");
printf(" ↓ ↓ ↓ \n");
printf(" 指令:STDxx XXX XXX XXX XXX \n");
printf(" ↑ ↑ \n");
printf(" 效驗位1 屏蔽位1 \n");
printf(" 例1:采集所有線上500K速率的標準CAN數據 例2:采集標識為 066 125K速率的標準CAN數據 \n");
printf(" STD04 000 000 000 000 STD16 066 066 7FF 7FF \n");
printf(" 例3:采集標識為 066 067 33.3K速率的標準CAN數據 例4:采集標識為066 067 068 069多標識500K速率的標準CAN數據 \n");
printf(" STD60 066 067 7FF 7FF STD04 066 068 7FE 7FE(算法詳見配套文檔) \n");
printf("2.擴展CAN數據采集方法 \n");
printf(" CAN速率 效驗位2 屏蔽位2 CAN速率: 2000000 / CAN速率 = xx \n");
printf(" ↓ ↓ ↓ \n");
printf(" 指令:EXTxx XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX \n");
printf(" ↑ ↑ \n");
printf(" 效驗位1 屏蔽位1 \n");
printf(" 例1:采集所有線上500K速率的擴展CAN數據 例2:采集標識為 193F1343 125K速率的擴展CAN數據 \n");
printf(" EXT04 00000000 00000000 00000000 00000000 EXT16 193F1343 193F1343 1FFFFFFF 1FFFFFFF \n");
printf(" 例3:采集標識為 193F1343 16EBF836 33.3K速率的擴展CAN數據 \n");
printf(" EXT60 193F1343 16EBF836 1FFFFFFF 1FFFFFFF \n");
printf(" 例4:采集標識為 16EBF835 16EBF836 16EBF837 16EBF838 等多標識500K速率的擴展CAN數據 \n");
printf(" EXT04 16EBF830 16EBF830 1FFFFFF0 1FFFFFF0 (算法詳見配套文檔) \n");
printf("3.CAN數據發送 \n");
printf(" 標準與擴展 數據長度 CAN速率: 2000000 / CAN速率 = xx \n");
printf(" ↓ ↓ \n");
printf(" 指令: SENDSTD(EXT)xx X XXXXXXXX XXX XXX XXX XXX XXX XXX XXX XXX XXX \n");
printf(" ↑ ↑ \n");
printf(" CAN速率 發送的數據幀 \n");
printf(" 例1:發送500K標準CAN數據 \n");
printf(" SENDSTD04 8 066 01 02 03 04 05 06 07 08 \n");
printf(" 例2:發送125K擴展CAN數據 \n");
printf(" SENDEXT16 3 193F1343 01 02 03 \n");
printf("4.單線CAN數據采集:請將CAN高連接單線數據線,CAN低連接接地端. \n");
CotrolVale = 0;
}
else if ((CotrolVale & 0x02) == 0x02)
{
CAN_Cofig(Check_Number(Cmd[7])*10 + Check_Number(Cmd[8]));
if (!strncmp((const char *)Cmd+4,"STD",3))
{
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = Check_Number(Cmd[10]);
TxMessage.StdId = (u32)Check_Number(Cmd[12])<<8;
TxMessage.StdId |= (u32)Check_Number(Cmd[13])<<4;
TxMessage.StdId |= (u32)Check_Number(Cmd[14]);
for(i = 0;i < TxMessage.DLC;i++)
{
TxMessage.Data[i] = (u8)Check_Number(Cmd[16+3*i])<<4;
TxMessage.Data[i] |= (u8)Check_Number(Cmd[17+3*i]);
}
if ((CotrolVale & 0x80) != 0x80)
{
TransmitMailbox = CAN_Transmit(CAN1,&TxMessage);
while (CAN_TransmitStatus(CAN1,TransmitMailbox) != 1);
printf("標準CAN數據已發送...\n");
CotrolVale = 0;
}
}
else if (!strncmp((const char *)Cmd+4,"EXT",3))
{
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_EXT;
TxMessage.DLC = Check_Number(Cmd[10]);
TxMessage.ExtId = 0;
for (i = 0; i < 8; i++)
{
TxMessage.ExtId |= (u32)Check_Number(Cmd[12+i])<<4*(7-i);
}
for(i = 0;i < TxMessage.DLC;i++)
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
完整代碼:
CANBUSV1.3程序.rar
(1.56 MB, 下載次數: 32)
2017-4-26 08:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
dqjiang
時間:
2017-9-23 12:18
好東西呀,可以不用買開發板了
作者:
dqjiang
時間:
2017-9-23 13:38
這個東西很好,希望更詳細點
作者:
askloser
時間:
2019-1-11 11:03
先感謝分享 , 不知是 完全自己寫 , 還是運用 ST裡 的庫
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
九九久久免费视频
|
亚洲va韩国va欧美va精品
|
性久久久久久久
|
少妇av
|
五月激情综合
|
日韩在线不卡视频
|
在线观看中文字幕
|
亚洲在线视频
|
日本精品久久
|
久久久亚洲一区
|
国内精品一区二区
|
欧美日韩一区二区三区四区
|
成人免费视频视频
|
91网站在线免费观看
|
奇米av
|
日本少妇视频
|
黄色大片免费观看
|
国产盗摄一区二区三区
|
精品欧美一区二区三区久久久
|
亚洲欧美久久
|
一区久久
|
国产精品无遮挡
|
国产精品一品二区三区的使用体验
|
国产精品区二区三区日本
|
国产欧美综合一区二区三区
|
丰满少妇高潮在线观看
|
欧美色综合天天久久综合精品
|
色婷婷导航
|
九色在线视频
|
97视频免费在线观看
|
日本不卡在线视频
|
国产欧美精品一区二区色综合
|
人人干人人艹
|
午夜精品久久久久久久
|
国产成人综合在线
|
亚色网站
|
四川一级毛毛片
|
欧美黄色片在线观看
|
午夜美女福利视频
|
激情丁香
|
狠狠操天天操
|