使用STM32F103ZET6做了設(shè)計(jì),F(xiàn)SMC總線上掛載了1片SRAM芯片和2片CH438芯片。
SRAM芯片接在NCE3上,1片CH438接在NE1上,一批接在NE4上。
目前程序測(cè)試SRAM芯片讀寫都正常,但通過FSMC總線操作CH438就會(huì)引起異常。
CH438是參考官方51單片機(jī)程序來修改的,估計(jì)還是程序沒有搞對(duì)。
官方是否有STM32 FSMC總線操作CH438的例程?
幾天未上來看。
謝謝Felix 。參考你的代碼FSMC調(diào)試已經(jīng)OK了。已經(jīng)可以正常與CH438通訊。
目前在調(diào)試大數(shù)據(jù)收發(fā)的問題,打開FIFO功能。發(fā)現(xiàn)上位機(jī)一次性發(fā)送超過112個(gè)字節(jié)給CH438,CH438的接收終端中只能接收到111個(gè)字節(jié),會(huì)丟失一個(gè)字節(jié)。不超過112個(gè)字節(jié)就有問題。
繼續(xù)找問題。
您好,可以檢查一下FIFO的觸發(fā)設(shè)置。
FIFO接收的數(shù)據(jù)到達(dá)FIFO觸發(fā)點(diǎn)就會(huì)產(chǎn)生一個(gè)接收數(shù)據(jù)可用中斷,如果FIFO數(shù)據(jù)不足觸發(fā)點(diǎn)設(shè)置的數(shù)據(jù)在超過4個(gè)數(shù)據(jù)的時(shí)間沒有收到數(shù)據(jù),就會(huì)產(chǎn)生一個(gè)接收數(shù)據(jù)超時(shí)中斷。所以您如果FIFO觸發(fā)點(diǎn)設(shè)置的是112字節(jié)觸發(fā),那么在數(shù)據(jù)少于112字節(jié)都會(huì)觸發(fā)接收數(shù)據(jù)超時(shí)中斷,而超過這個(gè)數(shù)據(jù)量就會(huì)觸發(fā)接收數(shù)據(jù)可用中斷。所以產(chǎn)生這兩個(gè)都需要接收數(shù)據(jù)。