ARM-FPGA杜邦線(xiàn)之片間傳輸--高速數(shù)據(jù)串?dāng)_
掃描二維碼
隨時(shí)隨地手機(jī)看文章
片間傳輸--高速數(shù)據(jù)串?dāng)_
這幾天調(diào)試一個(gè)東東,STM32的FSMC傳輸數(shù)據(jù)給Bingo自制的VGA控制器,由于沒(méi)有直接打板,板間用了杜邦線(xiàn)連接。FMSC傳輸模式為最快的速度,F(xiàn)SMC寫(xiě)時(shí)序如下圖所示,最快達(dá)到了72M(HCLK)的速度。但是我用了杜邦線(xiàn),,沒(méi)辦法。。。神奇的事情不斷地發(fā)生,幽靈一直在身邊,以此分享給大家點(diǎn)滴心得,雖然我也只是知道皮毛。
下圖是我項(xiàng)目中STM32與FPGA間,杜邦線(xiàn)連接的圖,杜邦線(xiàn)20cm,F(xiàn)SMC 最高HCLK=72MHz。從右到左分別為D0-D15,CS,RS,WR,RD
先貼一下貴人相助時(shí)的聊天記錄,眾人經(jīng)驗(yàn)總結(jié),精華部分,值得分享:
高速偏見(jiàn)傳輸,總結(jié)如下:
(1)杜邦線(xiàn)不能太長(zhǎng)
(2)干擾大了,可以加電容,來(lái)避免數(shù)據(jù)的串?dāng)_
(3)供電需要穩(wěn)定,加退耦電容
(4)電磁干擾
(5)跳變巨大的時(shí)候,會(huì)有干擾,將數(shù)據(jù)線(xiàn)與信號(hào)線(xiàn)隔離或者分開(kāi)
(6)異步數(shù)據(jù),首先要D觸發(fā)器鎖存
(7)Ffff到0000跳板太大了,干擾太大了
解決方案:
開(kāi)始相信是STM32代碼的問(wèn)題,我測(cè)試代碼,以下是我寫(xiě)入的測(cè)試代碼,1024*768個(gè)數(shù)據(jù)。
void LCD_ColorTest2(void)
{
u16 i,j;
LCD_Write_Address(0,0);//reset ram addr
LCD_WriteData_Begin();//Begin to Write data
for(i=0;i<768;i++)
{
for(j=0;j<1024;j++)
LCD_WriteData(i*j);
}
LCD_WriteData_End();
}
每次都會(huì)在屏幕2/3的時(shí)候掛掉,最后發(fā)現(xiàn),2/3屏幕的時(shí)候,DATA=512*1024-1=ffff,下一個(gè)數(shù)據(jù)位0000,問(wèn)題正在這里,因?yàn)樘?,干擾太大了,正如聊天記錄說(shuō)的那樣,于是我將WR與RS分離連接到功能相同的邊上的引腳(幸虧邊上IO也預(yù)留了FSCM的IO)。這樣眼睜睜的分離了信號(hào)線(xiàn)與數(shù)據(jù)線(xiàn),奇怪的是,這樣竟然真的圖像傳輸完整,數(shù)據(jù)沒(méi)有缺失了。如下圖所示,黃色為更改為之后的WR與RS信號(hào)線(xiàn)。
記得以前在實(shí)驗(yàn)室畫(huà)板子的時(shí)候,高速的通信,以太網(wǎng),RFID等,信號(hào)線(xiàn)都要用GND來(lái)隔離,杜邦線(xiàn)是最可惡的東西。記得當(dāng)年那個(gè)900M的射頻板子,那真的是吃過(guò)虧的。





