第二章,物理層主要有位定時(shí)和位填充、高速收發(fā)器、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、連接器。
本文引用地址:http://m.butianyuan.cn/article/201612/329855.htmCANopen的物理層相當(dāng)于CAN控制器中采用的子層PLS(物理信號(hào))、MAU(介質(zhì)訪問(wèn)單元)和MDI(介質(zhì)專用接口),這些子層均位于驅(qū)動(dòng)模塊中并通過(guò)連接器和電纜實(shí)現(xiàn)。
位定時(shí)其實(shí)就是針對(duì)各種不同的數(shù)據(jù)傳輸速率設(shè)定的采樣點(diǎn)。分為4個(gè)部分:同步段、傳播段、相位段1和相位段2。而位定時(shí)的采樣點(diǎn)恰好介于相位段1和2之間。
位填充可以表示為5個(gè)相同極性的位后面插入一個(gè)不同極性的填充位,而根據(jù)第3章里報(bào)文格式中得知,位填充只適合對(duì)幀起始SOF到CRC場(chǎng)之間的范圍內(nèi)的數(shù)據(jù)進(jìn)行處理。填充位可以由接收CAN控制器自動(dòng)去除填充,因此CAN報(bào)文物理層上的長(zhǎng)度取決于待傳輸?shù)奈桓袷健?/p>
收發(fā)器芯片具有一個(gè)Rx引腳和一個(gè)Tx引腳,這些引腳可直接將二進(jìn)制信號(hào)輸入到CAN控制器中或微控制器中的CAN模塊,CAN_HCAN_L端口直接與兩條總線導(dǎo)線連接。另外用戶可以利用一個(gè)外部電阻,通過(guò)一個(gè)可選端口來(lái)改變脈沖沿斜率。
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)ISO11898-2標(biāo)準(zhǔn)規(guī)定了一種帶2個(gè)終端電阻的線性總線結(jié)構(gòu),在總線兩端接上終端電阻可以避免導(dǎo)線上的信號(hào)反射。注意終端電阻的使用,總線導(dǎo)線的長(zhǎng)度和類別選擇。
連接器采用9針D-Sub連接器的引腳分布。
第三章CAN協(xié)議
主要有報(bào)文格式和錯(cuò)誤的檢測(cè)、限制和處理。
3.1報(bào)文格式
CAN規(guī)范定義,隱性電平的邏輯為1,顯性電平邏輯為0.有一個(gè)助記的是:顯靈(顯零),記住一個(gè),另一個(gè)當(dāng)然知道是隱1了。
CAN總線上傳輸?shù)膸?個(gè)類型:數(shù)據(jù)幀、遠(yuǎn)程幀、錯(cuò)誤幀、超載幀。
標(biāo)準(zhǔn)格式的數(shù)據(jù)幀組成:
幀起始(SOF):指示一個(gè)數(shù)據(jù)幀和遠(yuǎn)程幀的開(kāi)始,包含一個(gè)確定的顯性位。
標(biāo)識(shí)符場(chǎng)(CAN-ID):標(biāo)識(shí)符場(chǎng)由11位組成,用于表示確定的待傳輸消息,數(shù)值作侍傳輸消息的優(yōu)先級(jí)。
遠(yuǎn)程傳輸請(qǐng)求位(RTR):用于區(qū)分?jǐn)?shù)據(jù)幀還是遠(yuǎn)程幀。當(dāng)為顯性時(shí)傳輸數(shù)據(jù)幀,隱性為遠(yuǎn)程幀。
控制段:由6位組成,其中有4位DLC(數(shù)據(jù)長(zhǎng)度代碼)。DLC表示此幀在數(shù)據(jù)段中的傳輸字節(jié)數(shù)。
數(shù)據(jù)段:0~8字節(jié),包含此幀傳輸?shù)膶?shí)際有效信息。
CRC段:循環(huán)冗余校驗(yàn)。用來(lái)識(shí)別是否接收錯(cuò)誤的數(shù)據(jù)。
應(yīng)答段:應(yīng)答間隙位的電平值可以用來(lái)提示本網(wǎng)絡(luò)中沒(méi)有接收器正確收到了當(dāng)前發(fā)送的消息。
幀結(jié)束:由7位隱性電平的位組成。
幀間空間(ITM)已經(jīng)不屬于前一條幀的組成單元。
錯(cuò)誤幀:主動(dòng)錯(cuò)誤標(biāo)志由6個(gè)連續(xù)顯性電平的位組成,這違反了CAN填充規(guī)則,所以網(wǎng)絡(luò)中所有的設(shè)備都可以識(shí)別出這種錯(cuò)誤標(biāo)志。由主動(dòng)錯(cuò)誤標(biāo)志轉(zhuǎn)為被動(dòng)錯(cuò)誤標(biāo)志。錯(cuò)誤界定符由8個(gè)隱性電平位組成,用于結(jié)束錯(cuò)誤幀。
過(guò)載幀:通常由尚未處理完上一幀消息的CAN控制器發(fā)出,可以用于延遲網(wǎng)絡(luò)中其他設(shè)備發(fā)送下一條消息。過(guò)載標(biāo)志由6個(gè)連續(xù)顯性電平位組成,且必須在幀空間ITM的前兩個(gè)位之內(nèi)開(kāi)始。過(guò)載界定符由8個(gè)隱性電平組成,用于結(jié)束過(guò)載幀。過(guò)載幀不會(huì)影響錯(cuò)誤計(jì)數(shù)器的讀數(shù),這接收錯(cuò)誤計(jì)數(shù)器REC在發(fā)送過(guò)載標(biāo)志檢測(cè)到的位錯(cuò)誤REC不加1的原因吧。
CAN位信息的傳輸使用不歸零編碼(NRZ)的方式。
NRZ:信號(hào)電平的一次反轉(zhuǎn)代表1,電平不變化表示0,并且在表示完一個(gè)碼元后,電壓不需回到0.
好處是在一個(gè)位時(shí)間間隔里,只需要進(jìn)行一次掃描就可以檢測(cè)到電平。缺點(diǎn)是當(dāng)出現(xiàn)一些極性相同的連續(xù)位時(shí),沒(méi)有可用的信號(hào)邊沿來(lái)同步接收器。
CAN總線仲裁與填充原理需要注意。
3.2錯(cuò)誤的檢測(cè)、限制和處理
有5種檢測(cè)機(jī)制檢測(cè)錯(cuò)誤:
位錯(cuò)誤
填充規(guī)則錯(cuò)誤
CRC錯(cuò)誤
應(yīng)答錯(cuò)誤
格式錯(cuò)誤
所有CAN協(xié)議控制器都內(nèi)置兩個(gè)錯(cuò)誤計(jì)數(shù)器,一個(gè)接收錯(cuò)誤計(jì)數(shù)器REC,一個(gè)是發(fā)送錯(cuò)誤計(jì)數(shù)器TEC。
錯(cuò)誤計(jì)數(shù)器的值大于127小于255時(shí),設(shè)備進(jìn)入被動(dòng)錯(cuò)誤狀態(tài);當(dāng)錯(cuò)誤計(jì)數(shù)器的值小于127時(shí),設(shè)備處于主動(dòng)錯(cuò)誤狀態(tài);當(dāng)錯(cuò)誤計(jì)數(shù)器大于255時(shí),設(shè)備進(jìn)入總線脫離(BusOff)狀態(tài)。
錯(cuò)誤計(jì)數(shù)器的增減規(guī)定有8個(gè)。需要詳細(xì)的可以留言給我。
如果某一過(guò)載幀中檢測(cè)出錯(cuò)誤,剛只有處于錯(cuò)誤主動(dòng)狀態(tài)的設(shè)備才能允許發(fā)送一個(gè)錯(cuò)誤標(biāo)志。
評(píng)論