基于CAN總線的87C196CA單片機(jī)串行通訊的應(yīng)用
PCA82C250是CAN協(xié)議控制器和物理傳輸線路之間的接口,是影響網(wǎng)絡(luò)性能的關(guān)鍵因素。它對總線提供差動(dòng)發(fā)送能力,并對CAN控制器提供差動(dòng)接收能力,其最高傳輸速率可達(dá)1Mbit/s。其主要特點(diǎn)是芯片內(nèi)部具有限流電路,可以防止輸出級對電源、地或負(fù)載短路;由于采用差動(dòng)接收發(fā)方式,因此有較強(qiáng)的抗電磁干擾能力;具有低電流節(jié)電待機(jī)工作模式;該CAN總線收發(fā)器至少可以連接110個(gè)節(jié)點(diǎn)。利用PCA82C250還可以方便地在CAN控制器與驅(qū)動(dòng)器之間建立光電隔離,以實(shí)現(xiàn)總線上各節(jié)點(diǎn)間的電氣隔離。
3 通訊軟件
對于通過CAN 總線連接的單片機(jī)之間的通訊軟件編程需要定義一系列的控制字,并在兩個(gè)單片機(jī)上進(jìn)行配置。即首先進(jìn)行上電初始化,定義CAN控制寄存器,定義位定時(shí)寄存器選擇CAN 的通訊速率,定義信息體屏蔽寄存器選擇接收對象。其次對信息體進(jìn)行初始化,分別定義兩個(gè)信息體工作模式、發(fā)送字節(jié)數(shù)、選擇CAN2.0A 或CAN2.0B 方式。其程序代碼:
/ *CAN 控制器初始化*/
can_cON = 0x41 ; / *CAN 控制器CCE 位置1 ,
則可以定義CAN 定器* /
can_ btime0 = 0x41 ; /* 定義CAN 定時(shí)器為
250 Kb/ s * /
can_btime1 = 0x67 ;
can_con = 01 ; / *允許對CAN 控制器進(jìn)行軟
件初始化* /
can_sgmsk = 0x0 ; / * 定義標(biāo)準(zhǔn)CAN 通訊格
式的屏蔽控制字,所有位都不濾紙*/
can_msg1con0 = 0x55 ; / * 信息體1 控制器0
初始化* /
can_msg1con1 = 0x55 ; / * 信息體1 控制器1
初始化* /
can_msg1cfg = 0x88 ; / *定義信息體1 為發(fā)
送,發(fā)送8 字節(jié),標(biāo)準(zhǔn)CAN 格式* /
can_msg1id = 0xc8c8c8c8 ; / * 信息體1 標(biāo)識
寄存器初始化標(biāo)識符為c8c8c8c8 ;
can_ msg1con0 = ox95 ; / * 信息體1 控制器
0MSGVAL 位置1 ,標(biāo)明信息體1 有效* /
can_msg2con0 = 0x55 ; / * 信息體2 控制器0
初始化* /
can_msg2con1 = 0x55 ; / *信息體2 控制器1
初始化* /
can_msg2cfg = 0x80 ; / *定義信息體2 為接
收,接收8 字節(jié),標(biāo)準(zhǔn)CAN 格式* /
can_msg2id = 0xc8c8c8c8 ; / *信息體2 標(biāo)識
寄存器初始化標(biāo)識符為c8c8c8c8 */
can_ msg2con0 = ox95 ; / * 信息體2 控制器
0MSGVAL 位置1 ,標(biāo)明信息體2 有效 */
can_con = 0x02 ; / * CAN 控制器軟件初始化
完成*/
評論