<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 牛人業(yè)話(huà) > 盡信書(shū)不如無(wú)書(shū),芯片手冊也會(huì )讓你哭

盡信書(shū)不如無(wú)書(shū),芯片手冊也會(huì )讓你哭

作者:天雷君 時(shí)間:2019-06-10 來(lái)源:電子產(chǎn)品世界 收藏

四十年波瀾壯闊的改革開(kāi)放,無(wú)數中華兒女披星戴月,艱苦奮斗,不忘初心,砥礪前行,終于,中國這條古老的東方巨龍再度崛起,它飽含著(zhù)歷史文明的古韻和現代科技的自信,熠熠地閃耀在世界舞臺的中央。

本文引用地址:http://dyxdggzs.com/article/201906/401364.htm

眼睜睜地看著(zhù)民窮國弱的中華民族帶著(zhù)不可阻擋的豪情和碾壓一切的豪邁沖出亞洲,走向世界,美國佬終于按捺不住了。

山姆大叔揮舞著(zhù)大棒,伸著(zhù)長(cháng)長(cháng)的臂膀,把屠刀伸到華為、??低?、大疆這些中國頂尖的科技公司頭上。

盡管任正非先生氣度非凡,在這種至暗時(shí)刻依然力挺美國公司,呼吁廣大國人把“有良心的”美國公司和無(wú)良的美國政客分開(kāi)看待,但是,當我被來(lái)自美帝的耽誤了好長(cháng)一段時(shí)間時(shí),我依然克制不住壓在嗓子眼中的那三個(gè)字:耍我呢!

1

這顆芯片上面的,我熟悉地不能再熟悉了,可是現在,它竟然像薛定諤先生的貓那樣——測不準了!

1560135895946459.jpg

我怔怔地盯著(zhù)測試工裝電路板上這顆芯片——飛思卡爾的MPC5604B,這顆在過(guò)去的兩年中我無(wú)數次在它編碼、調試,與之建立了深厚的革命友誼的芯片,在我眼前輕輕拉起了朦朧的面紗。

一切都來(lái)得猝不及防,恍惚間,時(shí)間倒轉,我仿佛回到了兩年前。

當時(shí),用過(guò)一年微芯的芯片后,新產(chǎn)品上終于又用回了飛思卡爾的MCU。

當飛思卡爾的斜三角標識和‘MPC’的字眼剛剛映入眼簾時(shí),一種自然而然的親近感淺淺地在我心底漾起。

你好,飛思卡爾!再見(jiàn),微芯!

每家公司的產(chǎn)品都有自己特殊的基因,、技術(shù)資料、例程源碼也各有一套體系,帶有濃濃的個(gè)體色彩。

所以,盡管之前用過(guò)的飛思卡爾MCU都是16位,這個(gè)MPC是32位,但是讀起來(lái),看起來(lái)技術(shù)資料,還是有一種久違的熟悉感。

就這樣,我和MPC的磨合開(kāi)始了。

在芯片手冊和例程的幫助下,我慢慢地熟悉了這顆芯片的CLK、SWT、STM、IO、PIT、ADC、FlexCAN、LINFlex、eMIOS、Data Flash等模塊,按部就班地在它上面編程、調試,耐心地找bug,不厭其煩地清理、重構代碼,優(yōu)化產(chǎn)品性能。

一兩年下來(lái),產(chǎn)品開(kāi)發(fā)結束,順利量產(chǎn)供貨。

我看著(zhù)MPC5604B這顆芯片,一種感激之情油然而生。

這芯片性能不錯,價(jià)格不貴,開(kāi)發(fā)趁手,實(shí)在應該給它“打電話(huà)”!

本著(zhù)這種好感,在做另一款產(chǎn)品的測試工裝時(shí),我很自然地就向硬件工程師推薦了這顆芯片。

2

一張一弛,文武之道,亦是工程師之道。

前期緊張而忙碌的PEPS產(chǎn)品開(kāi)發(fā)工作結束了,隨后開(kāi)啟的測試工裝開(kāi)發(fā),正是松弛下來(lái)休養生息的好時(shí)候。

測試工裝用于對產(chǎn)品的功能進(jìn)行測試,主要是驗證生產(chǎn)下線(xiàn)后的產(chǎn)品的有效性。既不用考慮性能,也不用考慮效率,所以開(kāi)發(fā)難度不高。

再加上我們特意選用了之前產(chǎn)品上用過(guò)的MCU,正好可以移花接木。

把上面的代碼照搬過(guò)來(lái),根據測試工裝的功能需求稍加修改,調試運行一番,能實(shí)現對產(chǎn)品的測試功能,就到此結束了。

抱著(zhù)這種拿來(lái)主義的放松心態(tài),我一邊玩一邊寫(xiě)測試工裝的代碼,直到有一天......

那一天,正進(jìn)行到對PEPS的ACC/IGN1/IGN2繼電器輸出電路的測試上。拿ACC為例,測試邏輯如下:

?通過(guò)ISO14229診斷協(xié)議中的IO輸入輸出控制服務(wù),令PEPS輸出有效的ACC;

?在測試工裝上用ADC檢測ACC繼電器輸出的電壓水平。

這里有兩個(gè)問(wèn)題需要跟大家說(shuō)明。

第一,之所以通過(guò)診斷協(xié)議的IO控制這種貌似復雜的方式令待測產(chǎn)品在指定的IO端口上輸出,而不是根據待測產(chǎn)品的某項功能讓該IO端口在執行這項功能時(shí)輸出,是因為這種方式可以“消解”掉待測產(chǎn)品的功能。

換句話(huà)說(shuō),“功能”輸出的方式取決于待測產(chǎn)品,當測試另一種功能的待測產(chǎn)品時(shí),需要修改測試邏輯中令I(lǐng)O輸出有效的實(shí)現方式。

“診斷”輸出則不然,即使更換了待測產(chǎn)品的功能,也可以通過(guò)同樣的“診斷-IO控制”方式令I(lǐng)O輸出。

第二,之所以使用ADC檢測模擬電壓,而不是以“IO”的方式檢測數字電壓,是因為這里的ACC輸出電壓和被測產(chǎn)品PEPS的輸入電壓相關(guān)。

PEPS供電輸入電壓范圍介于8-16v之間,相應地ACC輸出電壓介于7.7-15.7v之間(兩者相差了一個(gè)二極管的壓降)。ADC模擬電壓方式顯然可以更好地應對被測產(chǎn)品輸入電壓變化時(shí)指定IO口電壓隨之變化的情況。

聰明的讀者可能想到了,假設被測產(chǎn)品的供電輸入電壓為16v時(shí),假設經(jīng)過(guò)分壓后,接入MCU的ACC端口上電平為4V,當輸入電壓為8v時(shí),MCU ACC端口上的電平便下降到了2v。

一個(gè)5V的MCU,數字IO上輸入4V可以讀取為‘1’,當數字IO上輸入2v時(shí),你說(shuō),MCU會(huì )讀取出‘0’來(lái)還是‘1’來(lái)?

3

那一天,風(fēng)平浪靜,萬(wàn)里無(wú)云,我按部就班地碼字,敲代碼,不疾不徐。

在時(shí)間的長(cháng)河中,未來(lái)早已存在,而過(guò)去永不消逝。所以,著(zhù)急什么呢?

帶著(zhù)時(shí)間虛無(wú)主義,我漫不經(jīng)心地看了看采集上來(lái)的ACC端口電壓,一種不安的直覺(jué)從心底漫起。

征戰多年,灑家的直覺(jué)一直很準的。

我的目光久久地停在A(yíng)DC采集ACC端口電壓的那條語(yǔ)句上:

if(1 == ADC0.adc_tagp->CDR[ACC_HS_AD].B.VALID){

ACC_relay_AD = ADC0.adc_tagp->CDR[ACC_HS_AD].B.CDATA;

}

PEPS的供電電壓為12v,ACC進(jìn)入到ADC的端口電壓大概在3v左右,在5V MCU的10位ADC下,對應的ADC值應該是:

搜狗截圖20190610094723.jpg

這里的1023是端口電壓為5V時(shí)滿(mǎn)量程數值。

結果,我得到的數字僅為460!

當時(shí),對于美帝芯片的一絲不恭敬之心,我都是不敢生起的。于是,我自然而然地懷疑到測試工裝的采集電路和自己的程序問(wèn)題。

順著(zhù)這種思路,我反復試驗了好幾種供電電壓,用示波器測量了ACC進(jìn)入測試工裝入口處的電壓,以及ACC進(jìn)入MCU ADC端口處的電壓。

結果,我更加疑惑了——ADC測不準了!

日出扶桑一丈高,人間萬(wàn)事細如毛。面對著(zhù)半路殺出的程咬金,想著(zhù)剩下的并不寬裕的時(shí)間,我突然發(fā)現,

未來(lái)已來(lái),而過(guò)去揮霍掉的時(shí)間,永不再來(lái)。

4

看著(zhù)這個(gè)無(wú)比熟悉的MCU,看著(zhù)這個(gè)剛剛在測試工裝其它功能上用過(guò)的ADC,我依然不敢相信自己的眼睛。

于是,我再一次對IGN1和IGN2這兩個(gè)端口展開(kāi)了測試,出乎我意料的是,結果竟然是一樣的。

看得到,或者看不到,bug都在那里,不來(lái)也不去。

調皮的風(fēng)兒在房間里跑過(guò)來(lái)又跑過(guò)去,懷疑和篤定的思緒在我腦袋里轉過(guò)來(lái)又轉過(guò)去,悠悠蕩蕩,跌跌撞撞。

看來(lái),這幾個(gè)ADC通道(6/7/8/9)真的是“與眾不同”?

#define ACC_HS_AD                   PADC_9

#define IGN1_HS_AD                  PADC_8

#define IGN2_HS_AD                  PADC_7

#define START_HS_AD                PADC_6

一念至此,我立馬打開(kāi)了之前產(chǎn)品的原理圖,果然,那個(gè)產(chǎn)品里“恰好”沒(méi)有用到這幾個(gè)ADC通道。

真是奇了怪了,當時(shí)的產(chǎn)品上恰恰沒(méi)有用到這幾個(gè)ADC通道上的ADC功能,這里的PEPS測試工裝原本也可以不用這幾個(gè)ADC通道的(ADC有40個(gè)通道)。

真是巧了,但是,人生的際遇不就是一個(gè)又一個(gè)巧合嗎?

既然如此,對美帝芯片手冊的心理障礙就可以放下了。我用多次采集確認了這幾個(gè)通道,最終發(fā)現,它們采集到的值正好是“預計值”的75%左右。

好吧,事已至此,姑且只能認為,對同一顆MCU,不同ADC通道的參考電壓不一樣吧。

本著(zhù)這種思路,我修改了程序里對這幾路ADC通道采集值的判定。

#if 0

#define RELAY_ON_THREHOLD_8V     400

#define RELAY_ON_THREHOLD_12V   600

#define RELAY_ON_THREHOLD_16V   800

#endif

#define RELAY_ON_THREHOLD_8V     300

#define RELAY_ON_THREHOLD_12V   450

#define RELAY_ON_THREHOLD_16V   600

改完之后,在各種電壓水平下,測試通過(guò),一切又回到了正軌。我也果斷地把這種“靈異”事件拋到了腦后。

既然想不通,那就不想了吧。

5

魯迅先生說(shuō),“我向來(lái)是不憚以最壞的惡意,來(lái)推測人心的?!?/p>

魯迅先生是世間少有的“鋼鐵直男”,灑家自然學(xué)不來(lái)。事實(shí)上,出了問(wèn)題,我都會(huì )自覺(jué)不自覺(jué)地把錯誤向自己身上攬。推功攬過(guò),這也頗合修行之義。

至于飛思卡爾MPC5604B的中居然有幾路通道的采集不以VCC-5V為供電電壓,灑家也總覺(jué)得是我司買(mǎi)物料時(shí)出了什么問(wèn)題,不愿意把這鍋甩到芯片公司頭上。

不過(guò),吃一塹,總會(huì )長(cháng)一智。經(jīng)此教訓,我也算是有了一定的收獲,至少現在,我認為:盡信書(shū)不如無(wú)書(shū),芯片手冊有時(shí)也會(huì )讓你哭!



關(guān)鍵詞: 芯片手冊 ADC模塊

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>