專利名稱:一種串行通信糾錯(cuò)方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明適用于通信領(lǐng)域,尤其涉及一種串行通信糾錯(cuò)方法和系統(tǒng)。
背景技術(shù):
目前通用的串行通信均沒有特定的數(shù)據(jù)格式和通信協(xié)議,也沒有專門的數(shù)據(jù)校驗(yàn)和應(yīng)答機(jī)制,通信雙方無法確定對方是否正確收到數(shù)據(jù),通信中無法保證數(shù)據(jù)傳輸或是發(fā)送時(shí)由于外界電磁場的影響對數(shù)據(jù)造成的影響,例如,由于外部信號干擾導(dǎo)致三條通信線上的數(shù)據(jù)電平受到影響,導(dǎo)致芯片接收的數(shù)據(jù)不正確或是由于不能同步,造成由于不同步引起的數(shù)據(jù)錯(cuò)誤,或是由于是兩芯片通信,若兩芯片不在同一塊控制板上,或供電電源不一樣,導(dǎo)致一顆芯片早于另一顆芯片運(yùn)行,若主機(jī)先運(yùn)行,開始發(fā)送時(shí)鐘和發(fā)送數(shù)據(jù),而當(dāng)從機(jī)上電開始運(yùn)行時(shí),若此時(shí)主機(jī)正在發(fā)送時(shí)鐘,則可能導(dǎo)致從機(jī)發(fā)送的數(shù)據(jù)錯(cuò)位的情況,最終導(dǎo)致主機(jī)接收的數(shù)據(jù)不正確當(dāng)發(fā)送數(shù)據(jù)錯(cuò)誤或是異步時(shí)芯片之間不能通過有效的手段進(jìn)行識別驗(yàn)證;或是雙芯片通訊采用 時(shí)鐘同步通信的方式可保證數(shù)據(jù)實(shí)時(shí)快速的進(jìn)行數(shù)據(jù)交互,但由于通信干擾、雙芯片上電運(yùn)行時(shí)序不一致、通訊線斷線后再連接等情況會導(dǎo)致雙芯片同步通訊數(shù)據(jù)不正確;或是由于通信線斷開后,兩芯片各自收不到正確的數(shù)據(jù)導(dǎo)致通訊故障,但當(dāng)通訊線重新連接后,由于兩芯片通信的數(shù)據(jù)狀態(tài)已經(jīng)為不確定狀態(tài),可能導(dǎo)致通訊的數(shù)據(jù)不正確。即當(dāng)數(shù)據(jù)通信錯(cuò)誤后,通信雙方無法自我校正數(shù)據(jù),因此就不能保證通信直接數(shù)據(jù)的正確,芯片直接進(jìn)行通信在沒有有效的糾錯(cuò)機(jī)制或是數(shù)據(jù)校驗(yàn)方式則不能保證的數(shù)據(jù)交互的有效性。無法實(shí)現(xiàn)雙芯片有效意義的數(shù)據(jù)交互。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種串行通信糾錯(cuò)方法和系統(tǒng),旨在解決現(xiàn)有技術(shù)存在的串行通信均沒有特定的數(shù)據(jù)格式和通信協(xié)議,也沒有專門的數(shù)據(jù)校驗(yàn)和應(yīng)答機(jī)制,通信雙方無法確定對方是否正確收到數(shù)據(jù),當(dāng)數(shù)據(jù)通信錯(cuò)誤后,通信雙方無法自我校正數(shù)據(jù)的問題,當(dāng)發(fā)送通信故障后通過移位寄存器的移位存儲功能即可以保證后續(xù)數(shù)據(jù)的正常接收,又同時(shí)可以達(dá)到糾錯(cuò)數(shù)據(jù)。本發(fā)明是這樣實(shí)現(xiàn)的,一種串行通信糾錯(cuò)方法,所述方法包括如下步驟接收端芯片接收發(fā)送端芯片發(fā)送的數(shù)據(jù);接收端芯片根據(jù)預(yù)先定義的開始字符、結(jié)束字符和數(shù)據(jù)長度判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù);當(dāng)數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換,當(dāng)數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)時(shí),接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)。接收端芯片根據(jù)預(yù)先定義的開始字符、結(jié)束字符和數(shù)據(jù)長度判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù),當(dāng)數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換,當(dāng)數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)時(shí),接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)的步驟具體為首先判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符是否為預(yù)先定義的開始字符和結(jié)束字符,再判斷數(shù)據(jù)長度是否為預(yù)先定義的數(shù)據(jù)長度,當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符為預(yù)先定義的開始字符和結(jié)束字符,數(shù)據(jù)長度是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為有效數(shù)據(jù),錯(cuò)誤計(jì)數(shù)清零,接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換;當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符不是預(yù)先定義的開始字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的結(jié)束字符不是預(yù)先定義的結(jié)束字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的數(shù)據(jù)長度不是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為錯(cuò)誤數(shù)據(jù),接收端芯片開啟糾錯(cuò)模式進(jìn)行糾錯(cuò),錯(cuò)誤計(jì)數(shù)器加一,當(dāng)錯(cuò)誤計(jì)數(shù)超過設(shè)定次數(shù)時(shí),接收端判定為發(fā)生通訊故障。接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)的步驟具體為接收端接收到數(shù)據(jù)后,判斷接收到的數(shù)據(jù)是否為有效數(shù)據(jù),當(dāng)判斷為無效數(shù)據(jù)后,接收端發(fā)送接收發(fā)送中斷進(jìn)入糾錯(cuò)模式,接收端接收下一時(shí)鐘信號對應(yīng)下的數(shù)據(jù),判斷接收到的對應(yīng)時(shí)鐘信號下的數(shù)據(jù)開始字符是否為正確數(shù)據(jù)開始字符,若開始字符錯(cuò)誤,則清除接收緩存上接收到的數(shù)據(jù)再開啟發(fā)送和接收中斷,錯(cuò)誤計(jì)數(shù)器加一,繼續(xù)接收下一對應(yīng)時(shí)鐘下的數(shù)據(jù)信息,若接收到的數(shù)據(jù)信息開始字符為正確數(shù)據(jù)開始字符,則判斷當(dāng)前數(shù)據(jù)為正確數(shù)據(jù),接收端更改發(fā)送中斷,接收端清除錯(cuò)誤計(jì)數(shù)器,恢復(fù)至普通數(shù)據(jù)接收模式。發(fā)送端芯片和接收端芯片之間的通信方式為三線制,三線分別為時(shí)鐘線、發(fā)送數(shù)據(jù)線和接收數(shù)據(jù)線。發(fā)送端芯片和接收端芯片中,其中一顆芯片為主芯片,另一顆芯片為從芯片,以主芯片的時(shí)鐘為基準(zhǔn)時(shí)鐘,主芯片發(fā)送數(shù)據(jù)時(shí),從芯片同步發(fā)送數(shù)據(jù)。本發(fā)明的另一目的在于提供一種串行通信糾錯(cuò)系統(tǒng),所述系統(tǒng)為雙芯片通信系統(tǒng),其中一端為接收端,用于接收發(fā)送的數(shù)據(jù)信息,另一端為發(fā)送端,用于發(fā)送數(shù)據(jù)信息,接收端接收到數(shù)據(jù)信息后根據(jù)預(yù)先定義的開始字符、結(jié)束字符和數(shù)據(jù)長度判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù),當(dāng)數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換,當(dāng)數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)時(shí),接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)的步驟具體為首先判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符是否為預(yù)先定義的開始字符和結(jié)束字符,再判斷數(shù)據(jù)長度是否為預(yù)先定義的數(shù)據(jù)長度,當(dāng)發(fā)送端芯片 發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符為預(yù)先定義的開始字符和結(jié)束字符,數(shù)據(jù)長度是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為有效數(shù)據(jù),錯(cuò)誤計(jì)數(shù)清零,接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換;當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符不是預(yù)先定義的開始字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的結(jié)束字符不是預(yù)先定義的結(jié)束字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的數(shù)據(jù)長度不是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為錯(cuò)誤數(shù)據(jù),接收端芯片開啟糾錯(cuò)模式進(jìn)行糾錯(cuò),錯(cuò)誤計(jì)數(shù)器加一,當(dāng)錯(cuò)誤計(jì)數(shù)超過設(shè)定次數(shù)時(shí),接收端判定為發(fā)生通訊故障所述系統(tǒng)發(fā)送端芯片和接收端芯片之間的通信方式為三線制,三線分別為時(shí)鐘線、發(fā)送數(shù)據(jù)線和接收數(shù)據(jù)線。所述系統(tǒng)發(fā)送端芯片和接收端芯片中,其中一顆芯片為主芯片,另一顆芯片為從芯片,以主芯片的時(shí)鐘為基準(zhǔn)時(shí)鐘,主芯片發(fā)送數(shù)據(jù)時(shí),從芯片同步發(fā)送數(shù)據(jù)。根據(jù)現(xiàn)有串行通信無法進(jìn)行數(shù)據(jù)校驗(yàn)和沒有應(yīng)答機(jī)制等缺點(diǎn)制定了專用的通訊協(xié)議,根據(jù)通訊協(xié)議和一定的糾錯(cuò)機(jī)制保證傳送的數(shù)據(jù)有數(shù)據(jù)校驗(yàn)機(jī)制和應(yīng)答機(jī)制,接收端進(jìn)入糾錯(cuò)模式后通過移位寄存的方式繼續(xù)接收后續(xù)數(shù)據(jù),既可以保證高速的通信速率,又同時(shí)可以達(dá)到糾正錯(cuò)誤數(shù)據(jù)的方式,從而保證雙方均能確定對方收到正確的數(shù)據(jù),保證通訊的速率和糾錯(cuò),當(dāng)發(fā)生通信錯(cuò)誤時(shí),能夠自我校正恢復(fù)數(shù)據(jù)和快速接收后續(xù)發(fā)送來的正確數(shù)據(jù),提高通信速率和保證通信數(shù)據(jù)正確。
圖1是本發(fā)明實(shí)施例提供的串行通信糾錯(cuò)方法的流程圖;圖2是本發(fā)明實(shí)施例提供的由于錯(cuò)位導(dǎo)致的數(shù)據(jù)錯(cuò)誤原理圖;圖3是本發(fā)明實(shí)施例提供的由于錯(cuò)字導(dǎo)致的數(shù)據(jù)錯(cuò)誤原理圖;圖4是本發(fā)明實(shí)施例提供的驗(yàn)證接收數(shù)據(jù)處理流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實(shí)施例通過采用三線制,自定義數(shù)據(jù)幀長度的固定長度數(shù)據(jù)和自定義的開始字符和結(jié)束字符來驗(yàn)證數(shù)據(jù)是否正確和進(jìn)行糾錯(cuò)。以下結(jié)合具體實(shí)施例對本發(fā)明的實(shí)現(xiàn)進(jìn)行詳細(xì)描述本發(fā)明提出了一種串行通信糾錯(cuò)方法和系統(tǒng),本發(fā)明技術(shù)方案為雙芯片進(jìn)行串行通信自動(dòng)糾錯(cuò)的,根據(jù)雙芯片通信協(xié)議接收端芯片根據(jù)協(xié)議接收雙芯片中發(fā)送端芯片發(fā)送的串行數(shù)據(jù),如圖1接收端芯片根據(jù)雙芯片通信協(xié)議判斷發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù)。雙芯片通信協(xié)議定義數(shù)據(jù)幀為自定義的長度,并定義開始字符為0xAA55,結(jié)束字符為0x55AA,通信方式為三線制,即一條發(fā)送數(shù)據(jù)線,一條接收數(shù)據(jù)線,一條時(shí)鐘線。本發(fā)明雙芯片中定義一顆芯片為主芯 片,當(dāng)發(fā)送數(shù)據(jù)的時(shí)鐘不同步時(shí)或是驗(yàn)證到數(shù)據(jù)發(fā)送的時(shí)鐘和主芯片采用的時(shí)鐘不相同,以主芯片的時(shí)鐘為基準(zhǔn)。所述接收端芯片根據(jù)預(yù)先定義的開始字符為0xAA55,結(jié)束字符為0x55AA和數(shù)據(jù)長度判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù),進(jìn)而驗(yàn)證數(shù)據(jù)的時(shí)鐘信息,確認(rèn)接收到的數(shù)據(jù)是否為有效數(shù)據(jù),當(dāng)判斷數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換,當(dāng)數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)時(shí),接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)的步驟具體為首先判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符是否為預(yù)先定義的開始字符和結(jié)束字符,再判斷數(shù)據(jù)長度是否為預(yù)先定義的數(shù)據(jù)長度,當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符為預(yù)先定義的開始字符和結(jié)束字符,數(shù)據(jù)長度是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為有效數(shù)據(jù),錯(cuò)誤計(jì)數(shù)清零,接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換;當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符不是預(yù)先定義的開始字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的結(jié)束字符不是預(yù)先定義的結(jié)束字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的數(shù)據(jù)長度不是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為錯(cuò)誤數(shù)據(jù),接收端進(jìn)入到糾錯(cuò)模式,發(fā)送端重新發(fā)送對應(yīng)時(shí)鐘的數(shù)據(jù),接收到糾錯(cuò)后的數(shù)據(jù)后,若驗(yàn)證通過繼續(xù)接收后續(xù)的數(shù)據(jù),如果連續(xù)多次接收糾正數(shù)據(jù)后依然未接收正確的糾正數(shù)據(jù),系統(tǒng)提示發(fā)生通信故障。實(shí)施例一
雙芯片初始化,開啟雙芯片各端的接收功能,允許對方芯片發(fā)送和本端芯片接收數(shù)據(jù),其中定義電平的下降沿為發(fā)送數(shù)據(jù),由于芯片采用三線制,主芯片和從芯片通過雙芯片協(xié)議在時(shí)鐘線的數(shù)據(jù)通信下同步時(shí)鐘,當(dāng)從芯片的時(shí)鐘與主芯片的時(shí)鐘不相同時(shí)以主芯片的時(shí)鐘為基準(zhǔn)時(shí)鐘數(shù)據(jù)。三線制的接收數(shù)據(jù)線和發(fā)送數(shù)據(jù)線在初始化后準(zhǔn)備為雙芯片同步串行數(shù)據(jù)發(fā)送和接收等待。雙芯片在初始化后即可以進(jìn)行數(shù)據(jù)交互,發(fā)送端通過發(fā)送數(shù)據(jù)線發(fā)送數(shù)據(jù),接收端同步做出接收回應(yīng),接收端接收到數(shù)據(jù)后,根據(jù)雙芯片通信協(xié)議的要求驗(yàn)證接收的數(shù)據(jù)是否為自定義長度的數(shù)據(jù)信息,數(shù)據(jù)的開始字符和結(jié)束字符是否為自定義的開始字符例如定義的開始字符0xAA55,結(jié)束字符為0x55AA。如果發(fā)生錯(cuò)位信息如圖2導(dǎo)致發(fā)送的數(shù)據(jù)與實(shí)際通訊線上的數(shù)據(jù)不一致。由于從芯片切入同步通信的時(shí)間剛好處于主機(jī)正在發(fā)送數(shù)據(jù)的時(shí)間段即導(dǎo)致通信的數(shù)據(jù)發(fā)送錯(cuò)位。由于本實(shí)施例開始字符為0xAA55,結(jié)束字符為0x55AA,從機(jī)發(fā)送寄存器中賦值OxOOAA,但通訊線上可能是0x0015或0x8055由于通信協(xié)議定義的開始字符和結(jié)束字符與實(shí)際通信中接收到的字符不相同,接收端即可發(fā)現(xiàn)通信數(shù)據(jù)發(fā)生錯(cuò)誤,即接收端進(jìn)入糾錯(cuò)模式,錯(cuò)誤計(jì)數(shù)器加一,發(fā)送端在得知接收端進(jìn)入通信模式根據(jù)接收端的反饋信息即從新將數(shù)據(jù)進(jìn)行發(fā)送,實(shí)現(xiàn)糾錯(cuò),由于發(fā)生的數(shù)據(jù)為錯(cuò)位,即由于從機(jī)切入同步通信的時(shí)間可能處于16個(gè)時(shí)鐘周期的任意一個(gè)周期中,使得錯(cuò)位的位數(shù)為1-16位的任意值,當(dāng)從機(jī)確認(rèn)接收的一幀數(shù)據(jù)不正確后,從機(jī)接收中斷進(jìn)入糾錯(cuò)模式,從機(jī)接收完一個(gè)字后判斷當(dāng)前接收的數(shù)據(jù)是否為開始字符0xAA55,若不是則清零接收緩存,關(guān)閉發(fā)送接收中斷,清零接收寄存器和移位寄存器,再開啟發(fā)送接收中斷,退出接收中斷函數(shù)。若接收的數(shù)據(jù)為開始字符0xAA55,則表示當(dāng)前已成功接收到主控發(fā)送的開始字符,更改發(fā)送中斷計(jì)數(shù)器為發(fā)送數(shù)據(jù)如果發(fā)送端發(fā)送糾錯(cuò)數(shù)據(jù),由于移位寄存器是遇到時(shí)鐘信號就接收對應(yīng)時(shí)鐘位上的數(shù)據(jù), 導(dǎo)致從機(jī)接收到的一個(gè)字的數(shù)據(jù)可能是由兩個(gè)字的時(shí)鐘的兩部分構(gòu)成的,此時(shí)通過清零接收緩存先清除當(dāng)前移位寄存器中所接收到的部分?jǐn)?shù)據(jù),再立即開啟發(fā)送和接收中斷,移位寄存器又開始接收新的數(shù)據(jù),此方法的前提是通訊速率需較快,傳送一個(gè)位的時(shí)間需小于兩倍的中斷處理時(shí)間,以保證從機(jī)在判斷所接收到的字?jǐn)?shù)據(jù)是否正確的同時(shí)移位寄存器中至少已接收到一個(gè)位的數(shù)據(jù)信息。從而即可以保證后續(xù)數(shù)據(jù)的正常接收,同時(shí)也可以達(dá)到糾錯(cuò)錯(cuò)誤數(shù)據(jù)。當(dāng)接收到驗(yàn)證為有效的正確數(shù)據(jù),錯(cuò)誤計(jì)數(shù)器清零,繼續(xù)進(jìn)行后續(xù)工作,接收端進(jìn)行糾錯(cuò)的步驟具體為接收端進(jìn)入糾錯(cuò)模式接收糾錯(cuò)數(shù)據(jù),接收端接收到糾錯(cuò)數(shù)據(jù)后判斷接收數(shù)據(jù)是否為有效數(shù)據(jù),當(dāng)糾錯(cuò)數(shù)據(jù)為無效數(shù)據(jù)時(shí),接收端發(fā)送接收發(fā)送中斷,清除接收到的緩存數(shù)據(jù),錯(cuò)誤計(jì)數(shù)器加一,當(dāng)接收端接收到的糾錯(cuò)數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端清除錯(cuò)誤計(jì)數(shù)器,恢復(fù)至普通數(shù)據(jù)接收模式。以實(shí)現(xiàn)串行通信自動(dòng)糾錯(cuò)的功能,糾正串行數(shù)據(jù)由于錯(cuò)位導(dǎo)致的數(shù)據(jù)錯(cuò)誤。實(shí)施例二雙芯片初始化,開啟雙芯片各端的接收功能,允許對方芯片發(fā)送和本端芯片接收數(shù)據(jù),其中定義電平的下降沿為發(fā)送數(shù)據(jù),由于芯片采用三線制,主芯片和從芯片通過雙芯片協(xié)議在時(shí)鐘線的數(shù)據(jù)通信下同步時(shí)鐘,當(dāng)從芯片的時(shí)鐘與主芯片的時(shí)鐘不相同時(shí)以主芯片的時(shí)鐘為基準(zhǔn)時(shí)鐘數(shù)據(jù)。三線制的接收數(shù)據(jù)線和發(fā)送數(shù)據(jù)線在初始化后準(zhǔn)備為雙芯片同步串行數(shù)據(jù)發(fā)送和接收等待。雙芯片在初始化后即可以進(jìn)行數(shù)據(jù)交互,發(fā)送端通過發(fā)送數(shù)據(jù)線發(fā)送數(shù)據(jù),接收端同步做出接收回應(yīng),接收端接收到數(shù)據(jù)后,根據(jù)雙芯片通信協(xié)議的要求驗(yàn)證接收的數(shù)據(jù)是否為自定義長度的數(shù)據(jù)信息,數(shù)據(jù)的開始字符和結(jié)束字符是否為自定義的開始字符例如定義的開始字符0xAA55,結(jié)束字符為0x55AA。如果發(fā)生錯(cuò)字信息如圖3導(dǎo)致發(fā)送的數(shù)據(jù)與實(shí)際通訊線上的數(shù)據(jù)不一致。即由于從機(jī)在在切入同步通信時(shí),主機(jī)已經(jīng)開始發(fā)送數(shù)個(gè)字?jǐn)?shù)據(jù),而從機(jī)才開始發(fā)送開始字符的情況,此時(shí)在通信協(xié)議三線制的狀態(tài)下可以驗(yàn)證時(shí)鐘線的數(shù)據(jù)是否正確即可以驗(yàn)證出通信數(shù)據(jù)是否為有效數(shù)據(jù)如果發(fā)生如圖3的錯(cuò)誤數(shù)據(jù),根據(jù)雙芯片通信協(xié)議要求主機(jī)發(fā)送開始字符時(shí),從機(jī)在對應(yīng)時(shí)鐘上也需發(fā)送開始字符,而造成錯(cuò)字的原因是從機(jī)切入同步通信的時(shí)間,主機(jī)已經(jīng)不是發(fā)送開始字符時(shí)就會導(dǎo)致錯(cuò)字。當(dāng)發(fā)生通信錯(cuò)誤時(shí),從機(jī)在接收到主機(jī)發(fā)送的開始字符時(shí)更改從機(jī)的發(fā)送送的計(jì)數(shù)器,使從機(jī)在下一個(gè)數(shù)據(jù)傳送時(shí)能夠傳送數(shù)據(jù)以保證在傳送下一幀數(shù)據(jù)時(shí),主從機(jī)發(fā)送和接收的數(shù)據(jù)是一一對應(yīng)的。以實(shí)現(xiàn)串行通信自動(dòng)糾錯(cuò)的功能,避免由于錯(cuò)字導(dǎo)致數(shù)據(jù)發(fā)送錯(cuò)誤。
實(shí)施例三雙芯片初始化,開啟雙芯片各端的接收功能,允許對方芯片發(fā)送和本端芯片接收數(shù)據(jù),其中定義電平的下降沿為發(fā)送數(shù)據(jù),由于芯片采用三線制,主芯片和從芯片通過雙芯片協(xié)議在時(shí)鐘線的數(shù)據(jù)通信下同步時(shí)鐘,當(dāng)從芯片的時(shí)鐘與主芯片的時(shí)鐘不相同時(shí)以主芯片的時(shí)鐘為基準(zhǔn)時(shí)鐘數(shù)據(jù)。三線制的接收數(shù)據(jù)線和發(fā)送數(shù)據(jù)線在初始化后準(zhǔn)備為雙芯片同步串行數(shù)據(jù)發(fā)送和接收等待。雙芯片在初始化后即可以進(jìn)行數(shù)據(jù)交互,發(fā)送端通過發(fā)送數(shù)據(jù)線發(fā)送數(shù)據(jù),接收端同步做出接收回應(yīng),接收端接收到數(shù)據(jù)后,根據(jù)雙芯片通信協(xié)議的要求驗(yàn)證接收的數(shù)據(jù)是否為自定義長度的數(shù)據(jù)信息,數(shù)據(jù)的開始字符和結(jié)束字符是否為自定義的開始字符例如定義的開始字符0xAA55,結(jié)束字符為0x55AA。如圖4若發(fā)現(xiàn)數(shù)據(jù)長度與自定義的數(shù)據(jù)長度不相同則接收端丟棄接收的數(shù)據(jù),清除接收到的數(shù)據(jù)信息,接收端發(fā)出發(fā)送中斷,錯(cuò)誤計(jì)數(shù)器加一,發(fā)送端接收到接收端的發(fā)送中斷后,發(fā)送端做出相應(yīng)的接收中斷,發(fā)送端重新發(fā)送之前的數(shù)據(jù)幀。接收端進(jìn)入糾錯(cuò)模式,接收端接收到數(shù)據(jù)幀驗(yàn)證接收到的數(shù)據(jù)是否為有效數(shù)據(jù),當(dāng)接收端接收到的糾錯(cuò)數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端清除錯(cuò)誤計(jì)數(shù)器,恢復(fù)至普通數(shù)據(jù)接收模式,當(dāng)糾錯(cuò)數(shù)據(jù)為無效數(shù)據(jù)時(shí),接收端發(fā)送接收發(fā)送中斷,清除接收到的緩存數(shù)據(jù),錯(cuò)誤計(jì)數(shù)器加一,系統(tǒng)驗(yàn)證錯(cuò)誤計(jì)數(shù)器數(shù)值,若多次接收后的數(shù)據(jù)仍不能是正確的數(shù)據(jù)信息,且驗(yàn)證的錯(cuò)誤計(jì)數(shù)器累加至9,系統(tǒng)提示發(fā)生通信故障,退出接收數(shù)據(jù)驗(yàn)證,結(jié)束驗(yàn)證數(shù)據(jù)。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種串行通信糾錯(cuò)方法,其特征在于,所述方法包括如下步驟 接收端芯片接收發(fā)送端芯片發(fā)送的數(shù)據(jù); 接收端芯片根據(jù)預(yù)先定義的開始字符、結(jié)束字符和數(shù)據(jù)長度判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù); 當(dāng)數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換,當(dāng)數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)時(shí),接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)。
2.如權(quán)利要求1所述的方法,其特征在于,所述接收端芯片根據(jù)預(yù)先定義的開始字符、結(jié)束字符和數(shù)據(jù)長度判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù)當(dāng)數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換,當(dāng)數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)時(shí),接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)的步驟具體為 首先判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符是否為預(yù)先定義的開始字符和結(jié)束字符,再判斷數(shù)據(jù)長度是否為預(yù)先定義的數(shù)據(jù)長度,當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符為預(yù)先定義的開始字符和結(jié)束字符,數(shù)據(jù)長度是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為有效數(shù)據(jù),錯(cuò)誤計(jì)數(shù)清零,接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換; 當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符不是預(yù)先定義的開始字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的結(jié)束字符不是預(yù)先定義的結(jié)束字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的數(shù)據(jù)長度不是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為錯(cuò)誤數(shù)據(jù),接收端芯片開啟糾錯(cuò)模式進(jìn)行糾錯(cuò),錯(cuò)誤計(jì)數(shù)器加一,當(dāng)錯(cuò)誤計(jì)數(shù)超過設(shè)定次數(shù)時(shí),接收端判定為發(fā)生通訊故障。
3.如權(quán)利要求1所述的方法,其特征在于,所述接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)的步驟具體為 接收端接收到數(shù)據(jù)后,判斷接收到的數(shù)據(jù)是否為有效數(shù)據(jù),當(dāng)判斷為無效數(shù)據(jù)后,接收端發(fā)送接收發(fā)送中斷進(jìn)入糾錯(cuò)模式,接收端接收下ー時(shí)鐘信號對應(yīng)下的數(shù)據(jù),判斷接收到的對應(yīng)時(shí)鐘信號下的數(shù)據(jù)開始字符是否為正確數(shù)據(jù)開始字符,若開始字符錯(cuò)誤,則清除接收緩存上接收到的數(shù)據(jù)再開啟發(fā)送和接收中斷,錯(cuò)誤計(jì)數(shù)器加一,繼續(xù)接收下ー對應(yīng)時(shí)鐘下的數(shù)據(jù)信息,若接收到的數(shù)據(jù)信息開始字符為正確數(shù)據(jù)開始字符,則判斷當(dāng)前數(shù)據(jù)為正確數(shù)據(jù),接收端更改發(fā)送中斷,接收端清除錯(cuò)誤計(jì)數(shù)器,恢復(fù)至普通數(shù)據(jù)接收模式。
4.如權(quán)利要求1所述的方法,其特征在于,所述發(fā)送端芯片和接收端芯片之間的通信方式為三線制,三線分別為時(shí)鐘線、發(fā)送數(shù)據(jù)線和接收數(shù)據(jù)線。
5.如權(quán)利要求1所述的方法,其特征在于,所述發(fā)送端芯片和接收端芯片中,其中ー顆芯片為主芯片,另ー顆芯片為從芯片,以主芯片的時(shí)鐘為基準(zhǔn)時(shí)鐘,主芯片發(fā)送數(shù)據(jù)時(shí),從芯片同步發(fā)送數(shù)據(jù)。
6.一種串行通信糾錯(cuò)系統(tǒng),其特征在于,所述系統(tǒng)內(nèi)置于接收端芯片,所述系統(tǒng)包括 接收模塊,用于接收發(fā)送端芯片發(fā)送的數(shù)據(jù); 判斷模塊,用于根據(jù)預(yù)先定義的開始字符、結(jié)束字符和數(shù)據(jù)長度判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù); 數(shù)據(jù)交換模塊,用于當(dāng)判斷模塊判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換;和 糾錯(cuò)模塊,用于當(dāng)判斷模塊判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)時(shí),進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)。
7.如權(quán)利要求6所述的系統(tǒng),其特征在干,所述判斷模塊具體用于判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符是否為預(yù)先定義的開始字符和結(jié)束字符,再判斷數(shù)據(jù)長度是否為預(yù)先定義的數(shù)據(jù)長度,當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符和結(jié)束字符為預(yù)先定義的開始字符和結(jié)束字符,數(shù)據(jù)長度是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為有效數(shù)據(jù);當(dāng)發(fā)送端芯片發(fā)送的數(shù)據(jù)的開始字符不是預(yù)先定義的開始字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的結(jié)束字符不是預(yù)先定義的結(jié)束字符,或發(fā)送端芯片發(fā)送的數(shù)據(jù)的數(shù)據(jù)長度不是預(yù)先定義的數(shù)據(jù)長度時(shí),判斷所述發(fā)送端芯片發(fā)送的數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)。
8.如權(quán)利要求6所述的系統(tǒng),其特征在干,糾錯(cuò)模塊進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)的具體步驟為 接收模塊接收到數(shù)據(jù)后,判斷模塊判斷接收模塊接收到的數(shù)據(jù)是否為有效數(shù)據(jù),當(dāng)判斷模塊判斷接收模塊接收到的數(shù)據(jù)為無效數(shù)據(jù)時(shí),接收模塊發(fā)送接收發(fā)送中斷進(jìn)入糾錯(cuò)模式,接收端接收下ー時(shí)鐘信號對應(yīng)下的數(shù)據(jù),判斷模塊判斷接收模塊接收到的對應(yīng)時(shí)鐘下的數(shù)據(jù)的開始字符是否為正確數(shù)據(jù)開始字符,若判斷開始字符錯(cuò)誤,則清除接收緩存上接收到的數(shù)據(jù)再開啟發(fā)送和接收終端,錯(cuò)誤計(jì)數(shù)器進(jìn)行加一操作,接收模塊繼續(xù)接收下ー時(shí)鐘對應(yīng)下的數(shù)據(jù)信息,若判斷模塊判斷接收到的數(shù)據(jù)信息開始字符為正確數(shù)據(jù)開始字符,則判斷模塊判斷當(dāng)前數(shù)據(jù)為正確數(shù)據(jù),接收模塊更改發(fā)送中斷,錯(cuò)誤計(jì)數(shù)器清零,數(shù)據(jù)交換模塊進(jìn)入到普通數(shù)據(jù)接收模式進(jìn)行數(shù)據(jù)交換。
9.如權(quán)利要求6所述的系統(tǒng),其特征在干,所述發(fā)送端芯片和接收端芯片之間的通信方式為三線制,三線分別為時(shí)鐘線、發(fā)送數(shù)據(jù)線和接收數(shù)據(jù)線。
10.如權(quán)利要求6所述的系統(tǒng),其特征在干,所述發(fā)送端芯片和接收端芯片中,其中一顆芯片為主芯片,另ー顆芯片為從芯片,以主芯片的時(shí)鐘為基準(zhǔn)時(shí)鐘,主芯片發(fā)送數(shù)據(jù)時(shí),從芯片同步發(fā)送數(shù)據(jù)。
全文摘要
本發(fā)明適用于通信領(lǐng)域,提供了一種串行通信糾錯(cuò)方法和系統(tǒng),所述方法包括如下步驟接收端芯片接收發(fā)送端芯片發(fā)送的數(shù)據(jù);接收端芯片根據(jù)預(yù)先定義的開始字符、結(jié)束字符和數(shù)據(jù)長度判斷發(fā)送端芯片發(fā)送的數(shù)據(jù)是否為有效數(shù)據(jù);當(dāng)數(shù)據(jù)為有效數(shù)據(jù)時(shí),接收端芯片和發(fā)送端芯片繼續(xù)進(jìn)行數(shù)據(jù)交換,當(dāng)數(shù)據(jù)為錯(cuò)誤數(shù)據(jù)時(shí),接收端芯片進(jìn)入糾錯(cuò)模式進(jìn)行糾錯(cuò)。本發(fā)明當(dāng)數(shù)據(jù)通信發(fā)生通信錯(cuò)誤后,通信雙方能夠?qū)崿F(xiàn)自我校正數(shù)據(jù),以保證雙方均能收到對方發(fā)送的正確的數(shù)據(jù),保證通信數(shù)據(jù)質(zhì)量。
文檔編號H04L1/00GK103051414SQ201210128310
公開日2013年4月17日 申請日期2012年4月27日 優(yōu)先權(quán)日2012年4月27日
發(fā)明者歐陽博 申請人:深圳市正弦電氣股份有限公司