日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]使用單片機控制ZL30151輸出時鐘,引腳連接關(guān)系如下:其中A1、A0是作為復用器的地址線信號,ZL30151 SPI模式下的有用管腳如下:CSN(IF0)、SCLK(SCL)、RSTN、MOSI(SDA)、MISO(IF1)、AC0(GPIO0)、AC1(GPIO1)(這些管腳中

使用單片機控制ZL30151輸出時鐘,引腳連接關(guān)系如下:

其中A1、A0是作為復用器的地址線信號,ZL30151 SPI模式下的有用管腳如下:

CSN(IF0)、SCLK(SCL)、RSTN、MOSI(SDA)、MISO(IF1)、AC0(GPIO0)、AC1(GPIO1)(這些管腳中的RSTN、AC0、AC1由FPGA控制),括號內(nèi)是管腳的第二功能,主要用于芯片復位時的模式設(shè)置,具體到SPI模式:在RSTN的上升沿,IF1、IF0要置1,AC0、AC1置0。另外RSTN在上電之后要有一個復位的過程,需要拉低至少100ns。而RSTN是在FPGA端控制的,所以需要單片機和FPGA共同控制,方法是單片機項FPGA的寄存器寫一個值,然后FPGA就將對應的管腳拉低或置1。SPI模式設(shè)置就要在單片機給FPGA發(fā)送賦值請求前,將IF1、IF0管腳的值準備好。問題就是在這里出現(xiàn)的。

程序通過編譯,下到單片機,但是ZL30151的時鐘沒有出來,然后進入debug模式找問題。

int main()

{

init_devices();

init_pll();

PLL3_init();

unsigned char f_read = FPGA_read(0x3b00);

……

return 0;

}

首先懷疑和FPGA的接口有問題,讀寄存器的值,看是否寫入進去,但是顯示一直是0,然后打斷點調(diào)試:

unsigned char f_read = FPGA_read(0x3b00);在這一句打斷點,結(jié)果程序根本沒跑到這里,然后將斷點往上打,

PLL3_init();程序運行到斷點這里,再點向下運行,程序就跑飛了,問題出在PLL3_init();然后在PLL3_init()函數(shù)里打斷點,

DDRD = 0x3f;

//X,X,SEL_A1,SEL_A0,MISO(IF1),MOSI(SDA),SCLK(SCL),CSN(IF0)

PORTD = 0x19;在這里程序竟然跑飛了。

這里只是一個簡單的給管腳賦值的語句,實在是看不出有什么問題,況且在init_devices();這個函數(shù)里面也有給管腳賦值的語句,并沒有問題。百思不得其解,請教單位的大牛王總,過來之后冷眼一掃,看到Port0、1、2、3復用了中斷功能,而且在init_devices();里面是使能了INT0和INT1的,就判斷應該是中斷引起的。然后剛好我在給PORT管腳賦值的時候?qū)NT0置為高了,所以程序就進入了中斷程序,但是本項目工程里并沒有寫INT0的中斷函數(shù)(沒有中斷函數(shù)還把中斷使能打開,這就是不動腦筋復制粘貼的后果),所以程序就跑飛了。

**關(guān)于單片機的中斷引腳,手冊里是這樣規(guī)定的:只要使能了中斷,即使引腳INT7:0配置為輸出,只要電平發(fā)生了合適的變化,中斷也會觸發(fā)。

所以雖然將引腳配置為輸出引腳,也仍然引發(fā)了中斷。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉