CAN总线总结和心得.doc

上传人:飞****9 文档编号:137141614 上传时间:2020-07-05 格式:DOC 页数:6 大小:59.50KB
返回 下载 相关 举报
CAN总线总结和心得.doc_第1页
第1页 / 共6页
CAN总线总结和心得.doc_第2页
第2页 / 共6页
CAN总线总结和心得.doc_第3页
第3页 / 共6页
CAN总线总结和心得.doc_第4页
第4页 / 共6页
CAN总线总结和心得.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《CAN总线总结和心得.doc》由会员分享,可在线阅读,更多相关《CAN总线总结和心得.doc(6页珍藏版)》请在金锄头文库上搜索。

1、以MCP2510爲控制器的CAN總綫使用後心得經過對由MCP2510爲控制器的CAN匯流排的應用,大致得出了以下結論。一首先是對晶片的電路接法,MCP2510的4、5、6、10、11可以空置,第3腳(CLK輸出脚)可以接到CPU的OSC腳,以取代CPU的震蕩體,但最好不用。如果對實時要求不高的話,第12脚(中斷脚)也可以空置。還有因爲MCP2551性能不好,易損壞。連到TXCAN、RXCAN的LED和5V間的電阻阻值不宜過小,取5K以上,最好不接。MCP2551的8脚决定了晶片的工作功耗,接地是高速模式(功耗大),接5V就會進入低功耗模式,和地之間接47K電阻是斜率模式(經常是用這種方式)。第

2、5脚的功能是輸出VDD/2的電壓,供別的晶片使用,這裏不用接。最好用PCA82C250/251取代,管脚的接法和用法和MCP2551相容。二這部分主要是對SPI和晶片的操作碼作一分析。下面的例子都是以PIC16F877爲平臺,用組合語言來編寫。對SPI介面的讀寫方法如下:初始化SPI:InitSSPBANKSELSSPSTAT; SSPSTAT = 0x94 CKE=0 for mode 00 Operation bsfSSPSTAT,6bcfSSPSTAT,7BANKSELPORT_CS2510; The PORT of CS2510 pins locationbsfCS2510BANKSE

3、LSSPCON; SSPCON = 0x20movlwb00100000; CKP=0 , Master Mode with Fosc/4 clockmovwfSSPCON returnSPI介面的讀和寫。寫:先把數傳入W,再調用Write_SPI_Byte。讀:先調用Write_SPI_Byte,讀出的資料存放在W。每次讀寫時要使CS脚爲0,讀寫完畢CS置1,下面是副程式:Write_SPI_ByteBANKSELSSPBUF movwfSSPBUFBANKSELSSPSTAT; Switch to SSPSTAT in order to test the BF FlagWait_BF bt

4、fssSSPSTAT,BFgotoWait_BFBANKSELSSPBUF; Read from SSPBUF will update BF Flag Automately !movfSSPBUF,Wreturn控制MCP2510晶片方法:先說一下MCP2510晶片的操作,共有6個操作碼,重定,位元修改,讀數據,寫資料,讀晶片的各發送器和接收器的狀態,請求發送開始。下面使各操作的副程式:重定,不需要參數,沒有返還變數:RESET_2510MACROBANKSELPORT_CS2510bcfCS2510movlwCMD_RESETcallWrite_SPI_ByteBANKSELPORT_CS2

5、510bsfCS2510ENDM位修改,有3個參數,M_DATA:要修改的內容 M_ADD:要修改寄存器的地址M_MASK:對修改內容的遮罩寄存器,沒有返還變數:MODIFY_2510MACROM_ADD,M_MASK,M_DATABANKSELPORT_CS2510bcfCS2510movlwCMD_MODIFYcallWrite_SPI_BytemovlwM_ADDcallWrite_SPI_BytemovlwM_MASKcallWrite_SPI_BytemovlwM_DATAcallWrite_SPI_ByteBANKSELPORT_CS2510bsfCS2510ENDM讀晶片的各發送

6、器和接收器的狀態,狀態字返還到變數STATUS_byte中:STATUS_2510MACROBANKSELPORT_CS2510bcfCS2510movlwCMD_STATUScallWrite_SPI_Bytemovlw0xffcallWrite_SPI_BytemovwfSTATUS_bytecallWrite_SPI_BytesubwfSTATUS_byte,WbtfssSTATUS,ZclrfSTATUS_byteBANKSELPORT_CS2510bsfCS2510ENDM請求發送開始,這個副程式是發送發送器0裏面的資料,如要發送1把CMD_RTS0改成CMD_RTS1,發送2把CM

7、D_RTS0改成CMD_RTS2,沒有返還值:SEND_TXB0MACROBANKSELPORT_CS2510bcfCS2510movlwCMD_RTS0; TRansmit Buffer 0callWrite_SPI_ByteBANKSELPORT_CS2510bsfCS2510ENDM讀數據,1個參數,R_ADD:指定寄存器地址,返還的寄存器內容存入W中:READ_2510MACROR_ADDBANKSELPORT_CS2510bcfCS2510movlwCMD_READcallWrite_SPI_BytemovlwR_ADDcallWrite_SPI_Bytemovlw0xffcallW

8、rite_SPI_ByteBANKSELPORT_CS2510bsfCS2510ENDM寫資料,2個參數,W_DATA:寫入內容W_ADD:寫入地址,W_DATA是常量。沒有返還值:WRITE_2510MACROW_ADD,W_DATABANKSELPORT_CS2510bcfCS2510movlwCMD_WRITEcallWrite_SPI_BytemovlwW_ADDcallWrite_SPI_BytemovlwW_DATAcallWrite_SPI_ByteBANKSELPORT_CS2510bsfCS2510ENDM除了這些,爲了編程方便,還擴展了幾種操作方式,寫資料(W_DATA爲變

9、數),多位元組讀數據,多位元組寫資料。寫資料,這個副程式功能和WRITE_2510一樣,區別在于WRITE_2510的W_DATA是個常量,調用這個宏的時候W_DATA是固定不變的,WRITE_2510_DATA的W_DATA是個變數,寄存器裏的值可變化:WRITE_2510_DATAMACROW_ADD,W_DATABANKSELPORT_CS2510bcfCS2510movlwCMD_WRITEcallWrite_SPI_BytemovlwW_ADDcallWrite_SPI_BytemovfW_DATA,WcallWrite_SPI_ByteBANKSELPORT_CS2510bsfCS

10、2510ENDM多位元組讀數據,有3個參數,FSR:讀出資料緩衝區的指標,這是個間接定址寄存器,存放指標位址,讀出來的資料就存放在FSR指定的寄存器內Addr_2510:MCP2510的讀出首地址Dlen_2510:讀出資料長度:WRITE_2510SmovlwBuf_2510movwfFSRBANKSELPORT_CS2510bcfCS2510movlwCMD_WRITE; Write command of MCP2510callWrite_SPI_ByteBANKSELAddr_2510movfAddr_2510,WcallWrite_SPI_Byte; Starting Address

11、!WRITE_2510S_LoopmovfINDF,W; Move data from FSR to WcallWrite_SPI_Byte; Write to MCP2510incfFSR,F; Point to next addressBANKSELDlen_2510DecfszDlen_2510,F; Check the condition of end of datagotoWRITE_2510S_LoopBANKSELPORT_CS2510bsfCS2510return多位元組寫資料READ_2510S,有3個參數,FSR:寫入資料緩衝區的指標,這是個間接定址寄存器,存放指標地址,A

12、ddr_2510:MCP2510的寫入首地址Dlen_2510:寫入資料長度:READ_2510SmovlwBuf_RECmovwfFSRBANKSELPORT_CS2510bcfCS2510movlwCMD_READ; Write command of MCP2510callWrite_SPI_ByteBANKSELAddr_2510movfAddr_2510,WcallWrite_SPI_Byte; Starting Address !READ_2510S_Loopmovlw0x00callWrite_SPI_BytemovwfINDF; Write to FSRincfFSRBANKSE

13、LDlen_2510DecfszDlen_2510,F; Check the total data readgotoREAD_2510S_LoopBANKSELPORT_CS2510bsfCS2510return三接下來是如何來進行CAN匯流排資料的發送和接收。首先是對MCP2510的初始化:1 重定,緊接著延時一下,以確保進入配置模式RESET_2510callDelay_MCP2510;一個延時副程式,不用太長時間2 進入配置模式,其實在重定時已進入配置模式,可以去掉MODIFY_2510CANCTRL,b11100000,b10000000; Set to Configure Mode3 設置震蕩脚是否輸出,幷且可以設置頻率,上電重定時是晶片震蕩體的八分之一頻率MODIFY_2510CANCTRL,b00000111,b00000100; Set Clock Out Freq4 設置CAN匯流排的串列傳輸速率,下面設置是125K/SWRITE_2510CNF1,b00000111; Set CNF1 , TQ = 2*8*1/16M = 1us 125k/bps WRITE_2510CNF2,b100

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号