0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用VIO去讀取PHY里面對(duì)應(yīng)寄存器測(cè)試RGMII接口

454398 ? 來(lái)源:網(wǎng)絡(luò)交換FPGA ? 作者:網(wǎng)絡(luò)交換FPGA ? 2020-11-06 13:06 ? 次閱讀

實(shí)驗(yàn)室回來(lái)一批板子,上面有RGMII接口、SGMII接口等各種接口,怎么測(cè)試這些網(wǎng)口是否正常呢?的確需要一些經(jīng)驗(yàn)。比如RGMII接口,最重要的是看在哪里去做的時(shí)鐘和數(shù)據(jù)偏移。這時(shí),常常需要使用VIO去讀取PHY里面對(duì)應(yīng)寄存器的值,看是否工作在正常RGMII接口時(shí)序模式。

測(cè)試場(chǎng)景

測(cè)試拓?fù)鋱D如下

試場(chǎng)景連接圖

測(cè)試方法:使用TestCenter向被測(cè)板子上的千兆以太網(wǎng)口打流,在FPGA內(nèi)部通過(guò)自回環(huán)從源端口返回給TestCenter,通過(guò)看TestCenter控制界面上顯示結(jié)果判斷自回環(huán)是否正確。

測(cè)試RGMII接口時(shí)使用的PHY芯片為MARVELL 公司的88e1512PHY芯片,RGMII頂層接口信號(hào)如圖1所示。

圖1 測(cè)試代碼頂層接口信號(hào)

采用以往經(jīng)驗(yàn)發(fā)現(xiàn)問(wèn)題

按照以往的RGMII接口使用經(jīng)驗(yàn),通過(guò)約束將接口的輸出時(shí)鐘延遲了2ns,如圖2所示。使用TestCenter對(duì)以太網(wǎng)口進(jìn)行測(cè)試,以太網(wǎng)口無(wú)法正常發(fā)送數(shù)據(jù)。具體表現(xiàn)為,TestCenter接收的數(shù)據(jù)幀數(shù)目,和發(fā)送的數(shù)據(jù)幀數(shù)目相等,但是接收的bit數(shù)明顯比發(fā)送的bit數(shù)少。抓取測(cè)試代碼的內(nèi)部信號(hào)發(fā)現(xiàn),F(xiàn)PGA接收到的以太網(wǎng)數(shù)據(jù)幀均正常,所以推測(cè)FPGA給PHY芯片的發(fā)送數(shù)據(jù)的時(shí)序不正常。

圖2 發(fā)送時(shí)鐘偏移2ns約束代碼

修改代碼,不對(duì)發(fā)送時(shí)鐘進(jìn)行2ns的偏移,如圖3所示。使用TestCenter對(duì)以太網(wǎng)口進(jìn)行測(cè)試,以太網(wǎng)口正常地工作。

圖3 發(fā)送時(shí)鐘不進(jìn)行偏移2ns

問(wèn)題原因定位

推測(cè)在不同的PHY芯片的工作模式下,對(duì)時(shí)鐘的要求不一樣。

之前使用的REALTEK的RTL8211E PHY芯片,需要對(duì)發(fā)送時(shí)鐘進(jìn)行2ns的延遲,查找該 PHY芯片手冊(cè), PHY芯片對(duì)發(fā)送時(shí)鐘有圖4所示的要求。表格中明確指出,需要自己添加時(shí)鐘和數(shù)據(jù)之間的2ns時(shí)延。

圖4 RTL8211E的發(fā)送時(shí)鐘

查找目前調(diào)試板子上所使用MARVELL的88e1512 PHY芯片的芯片手冊(cè),發(fā)現(xiàn)RGMII接口有4種不同的時(shí)鐘工作模式。

圖5 88e1512的4種時(shí)鐘工作模式

4種時(shí)鐘工作模式下的信號(hào)時(shí)序圖如圖6、圖7所示,結(jié)合上板現(xiàn)象,推測(cè)當(dāng)前的工作模式為add delay模式,即Register21_2.4=1。

圖6 RGMII發(fā)送時(shí)序

圖7 RGMII接收時(shí)序

圖8 寄存器的時(shí)鐘模式配置

由上面圖6、圖7和圖8可以看出,跟前面RTL8211E PHY芯片不同的是,MARVELL的88e1512 PHY芯片可以配置PHY與FPGA的RGMII接口時(shí)鐘信號(hào)和數(shù)據(jù)信號(hào)是否已經(jīng)相對(duì)偏移2ns。也就是說(shuō),可以通過(guò)讀取PHY芯片相應(yīng)寄存器的方法來(lái)看默認(rèn)的工作模式。

經(jīng)驗(yàn)總結(jié):遇到RGMII接口調(diào)試時(shí),最關(guān)鍵的是要查看PHY芯片的型號(hào),查閱PHY芯片手冊(cè),通過(guò)MDIO讀取PHY芯片寄存器的值,看RGMII接口上數(shù)據(jù)和時(shí)鐘是否偏移2ns,再?zèng)Q定FPGA對(duì)應(yīng)管腳約束是否進(jìn)行偏移!

用VIO方法讀取或配置PHY芯片的寄存器

在沒(méi)有CPU的情況下,對(duì)PHY芯片中寄存器在線讀取的最好辦法使用VIO通過(guò)MDIO接口對(duì)PHY芯片中的寄存器進(jìn)行讀取。具體方法可以查看本公眾號(hào)之前文章:

一種動(dòng)態(tài)調(diào)整RGMII接口時(shí)序的方法

Vivado進(jìn)行FPGA調(diào)試“犯罪現(xiàn)場(chǎng)”,在仿真環(huán)境中重現(xiàn)方法

使用VIVADO中VIO模擬CPU接口進(jìn)行在線寄存器讀寫(xiě)調(diào)試(附源代碼)

干貨:Vivado 直接修改RAM初始化文件,避免重新綜合、實(shí)現(xiàn)的方法

上圖為測(cè)試場(chǎng)景,由FPGA芯片通過(guò)24個(gè)Mdio接口控制24個(gè)88E1512 PHY芯片。

具體的測(cè)試步驟為:通過(guò)VIO配置MDIO管理模塊PHY地址、寄存器地址,然后選擇讀操作讀取某一PHY芯片的寄存器的值,結(jié)合PHY的工作狀態(tài),判斷該寄存器是否被正確讀取。由于執(zhí)行讀操作時(shí)是采用先寫(xiě)入地址,在讀取數(shù)據(jù)的方式,因此只測(cè)試讀操作就可以完整的測(cè)試MDIO管理模塊的功能。以下是VIO對(duì)應(yīng)的調(diào)用代碼。
//-----------------------------

mdio_module_VSC8658 U_mdio_module (
.mdc(mdc_o),
.mdio(mdio),
.reset(reset),
.mdir (mdir),
.execute(execute), //
.req(req), //讀 tb用
.phy_addr(phy_addr),
.reg_addr(reg_addr),
.data_phy(data_phy),
.data_rd(data_rd),
.op_done(op_done)
);

//-----------------------on board-----------------------------------
vio_0 u_vio (
.clk(clk), // input wire clk
.probe_out0(req), // output wire [0 : 0] probe_out1
.probe_out1(phy_addr), // output wire [4 : 0] probe_out2
.probe_out2(reg_addr), // output wire [4 : 0] probe_out3
.probe_out3(data_phy) // output wire [15 : 0] probe_out4
);
//-----------------

//----------------------mdc generate--------------------------------
//mdc should be 0~12.5MHz, the module is n*2 Divide
mdio_clk #(.Divider(25)) U_mdio_clk(
.reset (reset),
.clk(clk) ,
.clk_o(mdc_o)
);

//-------------------------------------------------------------------

通過(guò)VIO和MDIO讀取相應(yīng)寄存器的值,如圖10所示,讀取到的值為1076,換算成2進(jìn)值為0000_0100_0011_0100,對(duì)應(yīng)的工作模式為圖8所示的Transmit clock internally delayed,即 add delay模式,不需要對(duì)時(shí)鐘進(jìn)行2ns的偏移。

圖9 寄存器的地址

圖10 讀取的寄存器數(shù)值

圖11 用windows自帶的計(jì)算器看二進(jìn)制

確認(rèn)完之后,Testcenter打流,一切OK。但有時(shí)候,因?yàn)?a target="_blank">PCB設(shè)計(jì)的問(wèn)題,比如RGMII接口的時(shí)鐘未采用專(zhuān)用的時(shí)鐘管腳,或者是對(duì)應(yīng)的4bit數(shù)據(jù)信號(hào)不在FPGA芯片的同一個(gè)BANK,就會(huì)導(dǎo)致RGMII接口無(wú)論如何調(diào)整時(shí)鐘與數(shù)據(jù)之間的相位關(guān)系,該RGMII接口都無(wú)法正常工作。所以,能夠正常工作的前提是硬件的連線關(guān)系及PCB板是OK的。

FPGA使用RGMII接口與PHY芯片連接時(shí)經(jīng)驗(yàn)總結(jié)

事實(shí)上,相對(duì)于Altera的FPGA,Xilinx的FPGA在使用RGMII接口與PHY芯片相連時(shí)會(huì)比較講究。以下歸納幾點(diǎn)與大家分享。

1、rgmii信號(hào)中的接收時(shí)鐘phy_rxclk為單端時(shí)鐘,如果將此時(shí)鐘接到FPGA中多功能時(shí)鐘引腳(MRCC或SRCC)上時(shí),必須從正端(P)輸入;

每個(gè)PHY芯片的tx和rx信號(hào)接在FPGA的同一個(gè)bank中,其中tx_clk和rx_clk需要接入bank中時(shí)鐘專(zhuān)用管腳的P端,且其N(xiāo)端不能夠接其它信號(hào);

2、rgmii中接收信號(hào)(rxd、rxclk、rxctl)必須在FPGA中同一個(gè)bank或者相鄰bank上,如果是在相鄰bank上,rxclk必須接到MRCC中;

每個(gè)PHY芯片有4個(gè)rxd、4個(gè)txd、2個(gè)ctl信號(hào),每個(gè)PHY共10個(gè),4個(gè)PHY共40個(gè)信號(hào);接收發(fā)送每個(gè)PHY各有兩個(gè)時(shí)鐘,總共1個(gè)PHY占用12個(gè)引腳。理論上1個(gè)bank可以接4個(gè)PHY芯片;

3、注意PHY芯片的供電電壓與FPGA的供電電壓是否相同;

4、每個(gè)PHY芯片采用單獨(dú)的晶振產(chǎn)生參考時(shí)鐘;(本公眾號(hào)之前文章SDN先驅(qū)Nick教授以及netFPGA無(wú)法完美實(shí)現(xiàn)6802時(shí)間同步一文中就曾指出netFPGA就疑似存在此問(wèn)題,由于抖動(dòng)過(guò)大,多個(gè)端口無(wú)法實(shí)現(xiàn)6802同步);‘’

RGMII接口與GMII接口

在MAC核與PHY芯片的通信過(guò)程中,存在多種接口形式,如MII、GMII、RGMII、XGMII等,千兆以太網(wǎng)端口中以GMII(GigabitMedia Independent Interface)和RGMII(ReducedMedia Independent Interface)最為常見(jiàn)。GMII能夠支持10Mbps、100Mbps、1000Mbps的數(shù)據(jù)傳輸,其關(guān)鍵接口信號(hào)如圖4.1所示。

相比與GMII,RGMII接口的信號(hào)線大幅減少至12根,移除了其中不必要的TXER、RXER、COL、CRS,并將數(shù)據(jù)線寬度由8位縮減至4位,但同樣能夠支持10Mbps、100Mbps和1000Mbps傳輸,其接口信號(hào)如下圖4.2所示。

RGMII接口中的雙沿?cái)?shù)據(jù)信號(hào)適于傳輸,但并不適于數(shù)據(jù)處理,因此在MAC核內(nèi)處理PHY側(cè)數(shù)據(jù)時(shí)首先需要將雙沿?cái)?shù)據(jù)變換為單沿?cái)?shù)據(jù)。在Crossbar交換機(jī)實(shí)現(xiàn)時(shí)硬件平臺(tái)采用的是RGMII接口,故需要實(shí)現(xiàn)RGMII接口與GMII接口的相互轉(zhuǎn)換,如圖4.3所示。

RGMII雖然相比于GMII縮減了大量信號(hào)線,但仍能實(shí)現(xiàn)1000Mbps數(shù)據(jù)傳輸,原因在于RGMII采用雙沿傳輸技術(shù),在時(shí)鐘的上、下沿同時(shí)傳輸數(shù)據(jù),那么在一個(gè)時(shí)鐘周期內(nèi)就能完成8bits數(shù)據(jù)的傳輸,與GMII的收發(fā)效果相同,如圖4.4所示。而在RGMII中單向只有一個(gè)指示信號(hào)RX_CTL(TX_CTL),在雙沿傳輸時(shí)可將GMII中的RXEN與RXER也分別在RX_CTL的上、下沿進(jìn)行傳輸即可。

在上圖4.4中,RGMII數(shù)據(jù)在時(shí)鐘的上升沿傳輸GMII中的3~0位,在時(shí)鐘的下降沿傳輸GMII中的7~4位,一個(gè)時(shí)鐘完成8bits數(shù)據(jù)的傳輸。RX_CTL信號(hào)持續(xù)拉高,表明當(dāng)前幀正確無(wú)誤。

在上圖4.5中,數(shù)據(jù)傳輸與圖4.4相同,而RX_CTL在時(shí)鐘的下降沿跳變?yōu)?,代表了GMII中的RXER信號(hào)為1,表明傳輸錯(cuò)誤。而在RX_CTL持續(xù)時(shí)間結(jié)束時(shí),是在時(shí)鐘的上升沿拉低,此時(shí)在一個(gè)完整的時(shí)鐘周期內(nèi)RXEN=0,RXER=0,可知RX_CTL與RXEN、RXER的關(guān)系為:RXEN xorRXER = RX_CTL,xor代表異或運(yùn)算。

為實(shí)現(xiàn)RGMII信號(hào)與GMII信號(hào)的相互轉(zhuǎn)換,本文借助了Xilinx提供的基于FPGA的幾類(lèi)原語(yǔ),原語(yǔ)指Xilinx針對(duì)其器件特征開(kāi)發(fā)的一系列常用模塊的名字。下面列出所用原語(yǔ)的名稱(chēng)及介紹。

(1)IDDR、ODDR

DDR(Dual Data Rate)即雙倍速率,數(shù)據(jù)在時(shí)鐘的上升沿、下降沿均發(fā)生變化,IDDR用作將一路雙沿時(shí)鐘數(shù)據(jù)轉(zhuǎn)換為兩路普通數(shù)據(jù),ODDR用作將兩路普通數(shù)據(jù)幀轉(zhuǎn)換為一路雙沿時(shí)鐘數(shù)據(jù),如圖4.6所示。

(2)BUFIO

一種特殊的時(shí)鐘buffer,該buffer獨(dú)立于全局時(shí)鐘之外,適合用作接收源同步數(shù)據(jù),但需要之處的是,該buffer輸出的時(shí)鐘無(wú)法直接驅(qū)動(dòng)邏輯資源,適合驅(qū)動(dòng)IDDR等專(zhuān)用組件。

(3)BUFR

一種特殊的時(shí)鐘buffer,獨(dú)立于全局時(shí)鐘外,該buffer輸出的時(shí)鐘用作驅(qū)動(dòng)該區(qū)域內(nèi)的邏輯資源。

(4)IBUFG

一種全局時(shí)鐘buffer,在FPGA的時(shí)鐘輸入處都應(yīng)添加IBUFG進(jìn)行緩沖,使得緩沖后的時(shí)鐘線擁有最小的延遲與抖動(dòng),且驅(qū)動(dòng)能力大幅增加。

(5)IODELAY1、IDELAYCTRL

IODELAY1為一種可編程的絕對(duì)延時(shí)組件,可對(duì)某一線路添加一定的延時(shí),其延時(shí)值由IDEALYCTRL決定。IDELAYCTRL的延時(shí)精度為參考時(shí)鐘的1/64,如提供200MHz的參考時(shí)鐘,延時(shí)精度為5ns/64 = 78ps,二者需配合使用。

在接口轉(zhuǎn)換的硬件實(shí)現(xiàn)過(guò)程中,分為接收轉(zhuǎn)換與發(fā)送轉(zhuǎn)換,二者存在較大區(qū)別,下面分別給出接收轉(zhuǎn)換與發(fā)送轉(zhuǎn)換的實(shí)現(xiàn)過(guò)程。

接收轉(zhuǎn)換即為對(duì)RXD、RX_CTL的轉(zhuǎn)換,在千兆模式下RGMII接口接收數(shù)據(jù)時(shí),隨路時(shí)鐘即RXC為125MHz,且為雙沿傳輸,因此不僅要使用IDDR取出雙沿?cái)?shù)據(jù),更要對(duì)時(shí)鐘進(jìn)行額外處理,轉(zhuǎn)換過(guò)程如圖4.7所示。

在圖4.7中,并未給出RX_CTL的轉(zhuǎn)換,其轉(zhuǎn)換原理與RXD轉(zhuǎn)換類(lèi)似,在IDDR轉(zhuǎn)換后Q1為GMII下的RXDV,Q1 xor Q2為GMII下的RXER。圖中,IBUFG用于將外部輸入的性能較差時(shí)鐘RXC轉(zhuǎn)換為內(nèi)部可用的高效時(shí)鐘RXC_BUFG,BUFIO用于將RXC_BUFG轉(zhuǎn)換為適合采集源同步數(shù)據(jù)的時(shí)鐘RXC_BUFIO,BUFR用于將RXC_BUFG轉(zhuǎn)換為適合區(qū)域內(nèi)邏輯資源使用的時(shí)鐘Rx_clk_to_mac,相比于RXC_BUFG更適合驅(qū)動(dòng)Rxd_to_mac。IBUF與IBUFG功能相似,但I(xiàn)BUFG只適用于時(shí)鐘信號(hào),IBUF為數(shù)據(jù)線buffer。IODELAY1用作給RXD信號(hào)添加一定的延時(shí),抵消時(shí)鐘線在經(jīng)過(guò)BUFIO時(shí)與在硬件布線時(shí)引入的延時(shí),其延時(shí)值需要視硬件特性決定,在本文中使用Zedboard實(shí)現(xiàn)Crossbar交換機(jī)時(shí)延時(shí)值設(shè)置為0。IDDR在圖中只給出一個(gè),在實(shí)現(xiàn)時(shí)需要用到5個(gè)IDDR分別對(duì)應(yīng)于RXD0~RXD4以及RX_CTL。

發(fā)送轉(zhuǎn)換即為對(duì)TXD、TX_CTL的轉(zhuǎn)換,在RGMII的發(fā)送過(guò)程中,時(shí)鐘信號(hào)由FPGA內(nèi)部給出,因此不需要對(duì)時(shí)鐘線添加額外的buffer,需要指出的是,RGMII的發(fā)送時(shí)鐘與發(fā)送數(shù)據(jù)并非是沿對(duì)齊的,而是如圖4.8所示的中心對(duì)齊,采用這樣的時(shí)序好處在于對(duì)于對(duì)端接收來(lái)說(shuō),雙沿采樣更加穩(wěn)定。

在實(shí)際的發(fā)送轉(zhuǎn)換中,首先利用125MHz的時(shí)鐘驅(qū)動(dòng)ODDR獲得TXD以及TX_CTL(TX_CTL的轉(zhuǎn)換中D1為GMII中的TXEN,D2為GMII中的TXEN xorTXER),此時(shí)的TXD與TX_CTL與最初的125MHz時(shí)鐘是沿對(duì)齊的。特殊之處在于,TXC同樣由ODDR產(chǎn)生,該ODDR的驅(qū)動(dòng)時(shí)鐘為最初的125MHz時(shí)鐘相移90度后的另一時(shí)鐘tx_clk90,如圖4.9所示。之所以采用ODDR產(chǎn)生TXC是因?yàn)榇藭r(shí)的TXC就與TXD、TX_CTL經(jīng)過(guò)了相同的ODDR延時(shí),最終TXC與TXD、TX_CTL就是中心對(duì)齊的。

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119212
  • PHY
    PHY
    +關(guān)注

    關(guān)注

    2

    文章

    296

    瀏覽量

    51556
  • RGMII
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    12122
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    每個(gè)段與寄存器之間有何對(duì)應(yīng)的要求

    在數(shù)字電路和處理架構(gòu)中,特別是在如8086這樣的微處理中,每個(gè)段與寄存器之間有著明確的對(duì)應(yīng)要求。這些要求確保了處理能夠正確地訪問(wèn)和操作
    的頭像 發(fā)表于 08-28 10:39 ?182次閱讀

    寄存器尋址和直接尋址的區(qū)別

    。 一、寄存器尋址 寄存器尋址的定義 寄存器尋址是一種將操作數(shù)直接存儲(chǔ)在CPU內(nèi)部寄存器中的尋址方式。在這種尋址方式下,指令的操作數(shù)地址直接由寄存器
    的頭像 發(fā)表于 07-12 10:42 ?482次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類(lèi)型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?636次閱讀

    AFE模擬前端寄存器讀取操作

    AFE模擬前端寄存器讀取操作是電子系統(tǒng)設(shè)計(jì)和調(diào)試中不可或缺的一環(huán)。寄存器作為AFE模擬前端中的重要組成部分,存儲(chǔ)著各種配置參數(shù)和狀態(tài)信息,通過(guò)讀取這些
    的頭像 發(fā)表于 03-15 15:50 ?512次閱讀

    CPU的6個(gè)主要寄存器

    CPU寄存器是中央處理內(nèi)的組成部分,是有限存貯容量的高速存貯部件。寄存器是CPU內(nèi)部的元件,包括通用寄存器、專(zhuān)用寄存器和控制
    的頭像 發(fā)表于 02-03 15:15 ?2950次閱讀

    MC17XS6500高邊驅(qū)動(dòng)芯片寄存器的介紹

    本文主要是對(duì)MC17XS6500高邊驅(qū)動(dòng)芯片寄存器進(jìn)行的介紹,MC17XS6500寄存器分為輸入寄存器和輸出寄存器,對(duì)常用的幾個(gè)輸入和輸出寄存器
    的頭像 發(fā)表于 12-29 08:27 ?585次閱讀
    MC17XS6500高邊驅(qū)動(dòng)芯片<b class='flag-5'>寄存器</b>的介紹

    labview讀取三菱plc寄存器內(nèi)容

    如何使用LabVIEW讀取三菱PLC的寄存器內(nèi)容,并提供一些實(shí)例代碼和注意事項(xiàng)。 首先,我們需要了解PLC寄存器的基本概念。PLC寄存器是一種用于存儲(chǔ)數(shù)據(jù)的內(nèi)部變量,被用于傳輸和保存信
    的頭像 發(fā)表于 12-27 16:31 ?1670次閱讀

    請(qǐng)問(wèn)ADE7880無(wú)功功率寄存器是否有映射寄存器地址?

    ADE7880: 關(guān)于無(wú)功功率的寄存器AFVAR,BFVAR,CFVAR,查閱手冊(cè),其說(shuō)明是只能通過(guò)HSDC接口進(jìn)行讀取,但是我翻閱論壇之前的帖子,有說(shuō)明其有映射寄存器地址,但是手冊(cè)我
    發(fā)表于 12-26 07:12

    調(diào)試AD7124-8驅(qū)動(dòng)時(shí),對(duì)各寄存器配置之后再次讀各寄存器的值,多個(gè)寄存器的值都為fffffffd是為什么?

    在調(diào)試AD7124-8驅(qū)動(dòng)時(shí),對(duì)各寄存器配置之后再次讀各寄存器的值,多個(gè)寄存器的值都為fffffffd,這是為什么? 看參考程序里面對(duì)寄存器
    發(fā)表于 12-07 08:29

    mcu的SPI可以對(duì)AD7134的寄存器進(jìn)行讀取,但是無(wú)法進(jìn)行寫(xiě)寄存器是為什么?

    mcu的SPI可以對(duì)AD7134的寄存器進(jìn)行讀取,但是無(wú)法進(jìn)行寫(xiě)寄存器。我測(cè)試思路:先讀取寄存器
    發(fā)表于 11-30 08:24

    寄存器查看的功能和使用

    對(duì)于搞嵌入式底層開(kāi)發(fā)的軟件或者硬件工程師來(lái)說(shuō),經(jīng)常會(huì)涉及到查看芯片手冊(cè),比如某個(gè)芯片的串口控制寄存器值,需要知道這個(gè)值對(duì)應(yīng)寄存器的哪些位,微軟計(jì)算
    的頭像 發(fā)表于 11-28 12:26 ?1429次閱讀
    <b class='flag-5'>寄存器</b>查看<b class='flag-5'>器</b>的功能和使用

    RGMII接口案例:二個(gè)設(shè)備共享一個(gè)PHY

    最近項(xiàng)目中,F(xiàn)PGA通過(guò)多個(gè)RGMII接口與其他設(shè)備通信,在通信的過(guò)程中,有一個(gè)RGMII接口對(duì)端設(shè)備始終無(wú)法驅(qū)動(dòng),最后通過(guò)共享一個(gè)PHY,
    的頭像 發(fā)表于 11-27 16:47 ?7644次閱讀
    <b class='flag-5'>RGMII</b><b class='flag-5'>接口</b>案例:二個(gè)設(shè)備共享一個(gè)<b class='flag-5'>PHY</b>

    寄存器開(kāi)發(fā),HAL開(kāi)發(fā)和LL開(kāi)發(fā)的區(qū)別和參考代碼

    1,寄存器開(kāi)發(fā)【難度值:難】寄存器開(kāi)發(fā)是一種直接訪問(wèn)微控制寄存器的編程方法,它提供了對(duì)硬件的極大靈活性和直接控制。在寄存器級(jí)開(kāi)發(fā)中,程序員
    的頭像 發(fā)表于 11-17 08:00 ?1021次閱讀
    <b class='flag-5'>寄存器</b>開(kāi)發(fā),HAL開(kāi)發(fā)和LL開(kāi)發(fā)的區(qū)別和參考代碼

    CPSR寄存器和APSR寄存器的組成

    程序狀態(tài)寄存器的作用就是反映處理的狀態(tài)信息。在程序運(yùn)行期間我們可以通過(guò)查看程序狀態(tài)寄存器的狀態(tài)位來(lái)進(jìn)行程序的分支跳轉(zhuǎn)處理,或者我們可以設(shè)置程序狀態(tài)寄存器的模式位來(lái)改變處理
    的頭像 發(fā)表于 10-20 11:38 ?3736次閱讀
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的組成

    如何在shell中操作寄存器

    shell 中操作寄存器可以使用 devmem 命令. devmem 命令其實(shí)就是上述應(yīng)用層操作寄存器生成的可執(zhí)行文件,只不過(guò)busybox已經(jīng)幫我們實(shí)現(xiàn)了。 devmem 命令格式: Usage
    的頭像 發(fā)表于 09-26 16:39 ?841次閱讀