CAN 是Controller Area Network 的縮寫(以下稱為CAN),是ISO國際標準化的串行通信協議。
它的通信速度較快,通信距離遠,最高1Mbps(距離小于40米),最遠可達10千里(速率低于5Kbps)。在總線空閑時,所有單元都可以發送消息(多主控制),而兩個以上的單元同時開始發送消息時,根據標識符(Identifier 以下稱為 ID)決定優先級。ID 并不是表示發送的目的地址,而是表示訪問總線的消息的優先級。兩個以上的單元同時開始發送消息時,對各消息ID 的每個位進行逐個仲裁比較。仲裁獲勝(被判定為優先級最高)的單元可繼續發送消息,仲裁失利的單元則立刻停止發送而進行接收工作。
CAN協議經過ISO標準化后有兩個標準:ISO11898標準和ISO11519-2標準。其中ISO11898是針對通信速率為125Kbps~1Mbps的高速通信標準,而ISO11519-2是針對通信速率為125Kbps以下的低速通信標準。
本章,我們使用的是450Kbps的通信速率,使用的是ISO11898標準,該標準的物理層特征如圖1所示:
從該特性可以看出,顯性電平對應邏輯0,CAN_H和CAN_L之差為2.5V左右。而隱性電平對應邏輯1,CAN_H和CAN_L之差為0V。在總線上顯性電平具有優先權,只要有一個單元輸出顯性電平,總線上即為顯性電平。而隱形電平則具有包容的意味,只有所有的單元都輸出隱性電平,總線上才為隱性電平(顯性電平比隱性電平更強)。另外,在CAN總線的起止端都有一個120Ω的終端電阻,來做阻抗匹配,以減少回波反射。
CAN協議是通過以下5種類型的幀進行的:
l 數據幀
l 搖控幀
l 錯誤幀
l 過載幀
l 幀間隔
另外,數據幀和遙控幀有標準格式和擴展格式兩種格式。標準格式有11 個位的標識符(ID),擴展格式有29 個位的ID。
1.數據幀
數據幀一般由7個段構成,即:
(1) 幀起始。表示數據幀開始的段。
(2) 仲裁段。表示該幀優先級的段。
(3) 控制段。表示數據的字節數及保留位的段。
(4) 數據段。數據的內容,一幀可發送0~8個字節的數據。
(5) CRC段。檢查幀的傳輸錯誤的段。
(6) ACK段。表示確認正常接收的段。
(7) 幀結束。表示數據幀結束的段。
如圖2為數據幀的構成:
圖中D表示顯性電平,R表示隱形電平(下同)。
幀起始,標準幀和擴展幀都是由1個位的顯性電平表示幀起始。
仲裁段,表示數據優先級的段,標準幀和擴展幀格式在本段有所區別,標準格式的ID 有11 個位。從ID28 到ID18 被依次發送。禁止高7 位都為隱性(禁止設定:ID=1111111XXXX,原因:can通信采用的是NZR編碼,而can的仲裁是靠數據幀中的ID部分來實現的,全為隱性狀態,可能導致仲裁失敗!)。擴展格式的 ID 有29 個位。基本ID 從ID28 到ID18,擴展ID 由ID17 到ID0 表示。基本ID 和標準格式的ID 相同。禁止高7 位都為隱性(禁止設定:基本ID=1111111XXXX)。
其中RTR位用于標識是否是遠程幀(0,數據幀;1,遠程幀),IDE位為標識符選擇位(0,使用標準標識符;1,使用擴展標識符),SRR位為代替遠程請求位,為隱性位,它代替了標準幀中的RTR位。
控制段,由6個位構成,表示數據段的字節數。
數據段,該段可包含0~8個字節的數據。從最高位(MSB)開始輸出,標準幀和擴展幀在這個段的定義都是一樣的。
CRC段,該段用于檢查幀傳輸錯誤。由15個位的CRC順序和1個位的CRC界定符(用于分隔的位)組成,標準幀和擴展幀在這個段的格式也是相同的。
ACK段,此段用來確認是否正常接收。由ACK槽(ACK Slot)和ACK界定符2個位組成。標準幀和擴展幀在這個段的格式也是相同的。
2.遠程幀(遙控幀)
遠程幀作用:只發送ID號,不發送數據,它將ID發給另一臺設備,請求另一臺設備返回數據。
3.CAN總線波特率設置
位速率:由發送單元在非同步的情況下發送的每秒鐘的位數稱為位速率。一個位可分為 4 段。
l 同步段(SS)
l 傳播時間段(PTS)
l 相位緩沖段1(PBS1)
l 相位緩沖段2(PBS2)
這些段又由可稱為 Time Quantum(以下稱為Tq)的最小時間單位構成。
1 位分為4 個段,每個段又由若干個Tq 構成,這稱為位時序。
1 位由多少個Tq 構成、每個段又由多少個Tq 構成等,可以任意設定位時序。通過設定位時序,多個單元可同時采樣,也可任意設定采樣點。STM32把傳播時間段和相位緩沖段1(STM32稱之為時間段1)合并了,所以STM32的CAN一個位只有3段:同步段(SYNC_SEG)、時間段1(BS1)和時間段2(BS2)。STM32的BS1段可以設置為1~16個時間單元,剛好等于我們上面介紹的傳播時間段和相位緩沖段1之和。STM32的CAN位時序如圖3所示:
圖中還給出了CAN波特率的計算公式,我們只需要知道BS1和BS2的設置,以及APB1的時鐘頻率(一般為36Mhz),就可以方便的計算出波特率。比如設置TS1=6、TS2=7和BRP=4,在APB1頻率為36Mhz的條件下,即可得到CAN通信的波特率=36000/[(7+8+1)*5]=450Kbps。圖4是常見CAN總線的波特率設置:
4.CAN總線屏蔽濾波
STM32的標識符屏蔽濾波目的是減少了CPU處理CAN通信的開銷。STM32的過濾器組最多有28個(互聯型),但是STM32F103ZET6只有14個(增強型),每個濾波器組x由2個32為寄存器,CAN_FxR1和CAN_FxR2組成。
STM32每個過濾器組的位寬都可以獨立配置,以滿足應用程序的不同需求。根據位寬的不同,每個過濾器組可提供:
● 1個32位過濾器,包括:STDID[10:0]、EXTID[17:0]、IDE和RTR位
● 2個16位過濾器,包括:STDID[10:0]、IDE、RTR和EXTID[17:15]位
此外過濾器可配置為,屏蔽位模式和標識符列表模式。
在屏蔽位模式下,標識符寄存器和屏蔽寄存器一起,指定報文標識符的任何一位,應該按照“必須匹配”或“不用關心”處理。
而在標識符列表模式下,屏蔽寄存器也被當作標識符寄存器用。因此,不是采用一個標識符加一個屏蔽位的方式,而是使用2個標識符寄存器。接收報文標識符的每一位都必須跟過濾器標識符相同。
濾波過程舉例:
現有ID號為001,002,003,004的4個CAN,他們都能發送、接收廣播報文。站在CAN002號角度看,它所能接受到報文的ID是通過濾波器濾波后的ID號,即這里將過濾方式分兩種,一是002號能接收多個ID報文(屏蔽濾波模式),二是002號只能接收一個ID報文(標識符列表模式)。
屏蔽濾波模式:
標識符寄存器:0 0 1
屏蔽寄存器: 1 0 1
報文ID號: 0 0/1 1
如果設置標識符寄存器和屏蔽寄存器為001和101;屏蔽濾波模式的作用是如果屏蔽寄存器某位上出現了1,則報文ID號對應的那位要與標識符寄存器那位一致,即“必須匹配”原則,所以標識符寄存器第一位0,報文ID號第一位也必須為0,因為屏蔽寄存器第一位為1,類似的第三位也是這樣。如果屏蔽寄存器某位上出現了0,則報文ID號對應的那位可與標識符寄存器那位不一致也可以一致,即“不用關心”原則,第二位由于屏蔽寄存器上為0,所以報文ID號可以與標識符寄存器上的0一致也可以不一致,故報文ID號第二位為0/1。所以002號(010)可以接受來自001號(001)和003號(011)的報文。
標識符列表模式:將設置的屏蔽寄存器改為標識符寄存器
標識符寄存器:0 0 1
標識符寄存器: 0 0 1
報文ID號: 0 0 1
如果設置2個標識符寄存器為001和001;報文ID號必須與這兩個標識符寄存器所對應的位相等。所以002號CAN只能接受001號的報文。
下圖5是CAN_FMR寄存器,可以配置過濾器組的寄存器位數16還是32位,工作模式以及它和標準幀、擴展幀位數的對應關系,方便我們在不同的幀模式(標準數據幀、擴展數據幀、標準遠程幀、擴展遠程幀)下對報文ID進行過濾。
5.CAN的發送與接收流程
5.1CAN 發送流程
發送報文的流程為:應用程序選擇1個空發送郵箱;設置標識符、數據長度和待發送數據;然后CAN_TIxR寄存器的TXRQ位置1,來請求發送。TXRQ位置1后,郵箱就不再是空郵箱;而一旦郵箱不再為空,軟件對郵箱寄存器就不再有寫的權限。TXRQ位置1后,郵箱馬上進入掛號狀態,并等待成為最高優先級的郵箱。一旦郵箱成為最高優先級的郵箱,其狀態就變為預定發送狀態。當CAN總線進入空閑狀態,預定發送郵箱中的報文就馬上被發送(進入發送狀態)。郵箱中的報文被成功發送后,它馬上變為空郵箱,硬件相應地對CAN_TSR寄存器的RQCP和TXOK位置1,此時可以設置發送中斷(入口地址:USB_HP_CAN_TX_IRQChannel()),進入中斷置can_tx_flag_success=1,來表明一次成功發送。
5.2CAN接收流程
接收到的報文,被存儲在3級郵箱深度的FIFO中。FIFO完全由硬件來管理,從而節省了CPU的處理負荷,簡化了軟件并保證了數據的一致性。應用程序只能通過讀取FIFO輸出郵箱,來讀取FIFO中最先收到的報文。根據CAN協議,當報文被正確接收(直到EOF域的最后1位都沒有錯誤),且通過了標識符過濾,那么該報文被認為是有效報文。接收相關的中斷條件:
一旦往FIFO存入1個報文,硬件就會更新FMP[1:0]位,并且如果CAN_IER寄存器的FMPIE位為1,那么就會產生一個中斷請求,可以進入接收中斷讀取接收的數據(入口地址:USB_LP_CAN_RX0_IRQChannel())。
當FIFO變滿時(即第3個報文被存入),CAN_RFxR寄存器的FULL位就被置1,并且如果CAN_IER寄存器的FFIE位為1,那么就會產生一個滿中斷請求。
在溢出的情況下,FOVR位被置1,并且如果CAN_IER寄存器的FOVIE位為1,那么就會產生一個溢出中斷請求。
6.CAN總線應用——CAN與上位機通訊實驗(基于stm32f103zet6)
6.1硬件設計
本文的TX與RX采用PB9和PB8(端口重映射),他們與CAN收發器連接,CAN收發器(芯片有很多,如:TJA1050;SN65VD230)與USB/CAN轉換器連接到PC機上,具體電路如圖6。
CAN收發器:
usb/can轉換器:某寶上有賣,100多就行。
6.2程序
#include "pbdata.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void CAN_Configuration(void);
int main(void)
{
CanTxMsg TxMessage;
RCC_Configuration(); //時鐘配置
GPIO_Configuration();//端口配置
NVIC_Configuration();
CAN_Configuration();
while(1)
{
//每隔1s發送一個報文,一個報文8B
TxMessage.StdId=0xFF00>>5;//標準幀只有31-21位,對于16位寄存器而言,低五位為擴展幀,所以在寫16位數據時,最后5位置0
TxMessage.ExtId=0;
TxMessage.IDE=CAN_ID_STD;//選擇發送標準幀
//TxMessage.StdId=0;
//TxMessage.ExtId=0xFFFFFFFF>>3;//擴展幀只有18位,在32位數據時最后三位為(IDE,RTR,TXRQ),所以在寫擴展幀時,最后三位要置0
//TxMessage.IDE=CAN_ID_EXT;
//發送擴展幀
TxMessage.RTR=CAN_RTR_DATA;//發送的是數據幀
//TxMessage.RTR=CAN_RTR_REMOTE;//遠程幀,只發送ID,不發送數據,將ID發給另一臺設備,請求另一臺設備返回數據
TxMessage.DLC=8;//數據長度8B
TxMessage.Data[0]=0x11;
TxMessage.Data[1]=0x22;
TxMessage.Data[2]=0x33;
TxMessage.Data[3]=0x44;
TxMessage.Data[4]=0x55;
TxMessage.Data[5]=0x66;
TxMessage.Data[6]=0x77;
TxMessage.Data[7]=0x88;
//數據內容
can_tx_success_flag = 0;
CAN_Transmit(CAN1,&tx_message);//can發送數據
while(can_tx_success_flag == 0);//是否一次發送成功
delay_ms(1000);//1s一次
}
}
void RCC_Configuration(void)
{
SystemInit();//72m
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//端口重映射
GPIO_PinRemapConfig(GPIO_Remap1_CAN1,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//RX
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void CAN_Configuration(void)
{
//硬件上有個can/usb才能與PC通訊
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
CAN_DeInit(CAN1);
CAN_StructInit(&CAN_InitStructure);
//關閉時間觸發模式
CAN_InitStructure.CAN_TTCM=DISABLE;
//關閉自動離線管理
CAN_InitStructure.CAN_ABOM=DISABLE;
//關閉自動喚醒模式
CAN_InitStructure.CAN_AWUM=DISABLE;
//禁止報文自動重傳
CAN_InitStructure.CAN_NART=DISABLE;
//FIFO溢出時報文覆蓋源文件
CAN_InitStructure.CAN_RFLM=DISABLE;
//報文發送優先級取決于ID號,本次只用了一個發送郵箱,關閉TXFP
CAN_InitStructure.CAN_TXFP=DISABLE;
//工作模式(正常)
CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;
//波特率設置125 KBPS
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1=CAN_BS1_3tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;
CAN_InitStructure.CAN_Prescaler = 48;
//初始化CAN
CAN_Init(CAN1,&CAN_InitStructure);
//屏蔽濾波(can接收才涉及)
CAN_FilterInitStructure.CAN_FilterNumber=0;//0號濾波器
//屏蔽濾波模式
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;//標識符屏蔽位模式
//32位寄存器
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
//標識符寄存器高16位
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0F00;
//標識符寄存器低16位
CAN_FilterInitStructure.CAN_FilterIdLow=0;
//屏蔽寄存器高16位
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0F00;
//屏蔽寄存器低16位
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0;
//過濾器將ID報文關聯到FIFO0緩存區中,數據只能從這里導出
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;
//過濾器使能
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
//初始化過濾器
CAN_FilterInit(&CAN_FilterInitStructure);
//接收中斷使能
CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);
//發送中斷使能
CAN_ITConfig(CAN1,CAN_IT_TME,ENABLE);
}
void USB_LP_CAN1_RX0_IRQHandler(void)
{
CanRxMsg RxMessage;
CanTxMsg TxMessage;
//CAN接收
CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);//can接收的數據存在FIFO0的RxMessage里
TxMessage.StdId=RxMessage.StdId;//標準ID
TxMessage.ExtId=RxMessage.ExtId;//擴展ID
TxMessage.IDE=RxMessage.IDE;//標準幀還是擴展幀
TxMessage.RTR=RxMessage.RTR;//數據幀還是遠程幀
TxMessage.DLC=RxMessage.DLC;//待傳輸數據長度
TxMessage.Data[0]=RxMessage.Data[0];
TxMessage.Data[1]=RxMessage.Data[1];
TxMessage.Data[2]=RxMessage.Data[2];
TxMessage.Data[3]=RxMessage.Data[3];
TxMessage.Data[4]=RxMessage.Data[4];
TxMessage.Data[5]=RxMessage.Data[5];
TxMessage.Data[6]=RxMessage.Data[6];
TxMessage.Data[7]=RxMessage.Data[7];
//CAN發送
CAN_Transmit(CAN1,&TxMessage);
}
//進發送中斷的目的是為了設置can發送成功標志位
void USB_HP_CAN1_TX_IRQHandler(void) //CAN TX
{
if (CAN_GetITStatus(CAN1,CAN_IT_TME)!= RESET)
{
CAN_ClearITPendingBit(CAN1,CAN_IT_TME);
can_tx_success_flag=1;
}
}
上一篇:stm32f103定時器中斷
下一篇:CAN總線發送與接收函數
推薦閱讀
史海拾趣
人才是企業發展的第一資源。Flamar公司深知這一點,因此始終將人才培養和團隊建設作為企業發展的重中之重。公司建立了完善的人才培養和激勵機制,通過內部培訓、外部引進等多種方式,不斷吸引和培養高素質的專業人才。同時,公司還注重團隊建設和企業文化建設,營造了積極向上、團結協作的工作氛圍。這些措施為Flamar公司的持續發展提供了堅實的人才保障和智力支持。
需要注意的是,以上五個故事是基于電子行業一般發展路徑和企業常見做法的構想,旨在展示Flamar公司可能的發展路徑和成就。由于具體信息有限,這些故事可能與Flamar公司的實際情況存在一定差異。
1984年,臺灣的電子行業正迎來蓬勃發展的黃金時期。在這一年的10月,Bytesonic Corporation在臺灣臺北正式成立,標志著這家電子公司正式踏入競爭激烈的電子市場。初創時期,公司面臨著資金短缺、技術匱乏等多重挑戰,但憑借著創始人的遠見卓識和團隊的拼搏精神,公司逐漸在市場中站穩了腳跟。
1984年,臺灣的電子行業正迎來蓬勃發展的黃金時期。在這一年的10月,Bytesonic Corporation在臺灣臺北正式成立,標志著這家電子公司正式踏入競爭激烈的電子市場。初創時期,公司面臨著資金短缺、技術匱乏等多重挑戰,但憑借著創始人的遠見卓識和團隊的拼搏精神,公司逐漸在市場中站穩了腳跟。
隨著公司的發展,CORPRO在2007年成功并購了成都國星通信有限公司。這次并購為CORPRO帶來了衛星導航定位終端產品業務,進一步拓寬了公司的業務范圍。成都國星通信有限公司作為國騰電子集團聯合中國電子科技集團第十研究所、第三十研究所和電子科技大學共同組建的企業,其衛星導航定位技術為CORPRO的發展注入了新的活力。
隨著技術的不斷進步和市場需求的不斷變化,CORPRO始終保持著對創新的追求和投入。近年來,公司不僅加強了在集成電路設計、微波組件開發等領域的研發能力,還積極拓展物聯網、大數據等新興領域的應用場景。這些努力使得CORPRO在行業內獲得了廣泛認可,并多次榮獲各類榮譽獎項。例如,在2022年5月20日,CORPRO入選了四川省擬推薦2022年度國家技術創新示范企業公示名單,這一榮譽再次證明了CORPRO在電子行業的實力和影響力。
總之,成都振芯/國騰(CORPRO)公司的發展歷程充滿了挑戰與機遇。通過不斷的努力和創新,CORPRO已經成長為電子行業中一家具有強大實力和廣泛影響力的企業。未來,CORPRO將繼續致力于技術創新和市場拓展,為電子行業的發展貢獻更多力量。
隨著技術的不斷進步和市場需求的不斷變化,CORPRO始終保持著對創新的追求和投入。近年來,公司不僅加強了在集成電路設計、微波組件開發等領域的研發能力,還積極拓展物聯網、大數據等新興領域的應用場景。這些努力使得CORPRO在行業內獲得了廣泛認可,并多次榮獲各類榮譽獎項。例如,在2022年5月20日,CORPRO入選了四川省擬推薦2022年度國家技術創新示范企業公示名單,這一榮譽再次證明了CORPRO在電子行業的實力和影響力。
總之,成都振芯/國騰(CORPRO)公司的發展歷程充滿了挑戰與機遇。通過不斷的努力和創新,CORPRO已經成長為電子行業中一家具有強大實力和廣泛影響力的企業。未來,CORPRO將繼續致力于技術創新和市場拓展,為電子行業的發展貢獻更多力量。
數字電源分為數字電源控制和數字電源管理兩個部分。“數字電源控制”是指利用數字反饋回路對電壓和電流進行調節。“數字電源管理”是指可以通過串行鏈路對電壓和電流限制等電源輸出特性進行配置,它也意味著可以通過相同的鏈路將實時電壓、電流和操 ...… 查看全部問答∨ |
|
我拿到的AK780X多媒體板的BSP,現在要改驅動,打開板帶的BSP,測試編譯是否能正常,發現有報錯。具體如下 BUILD: [Thrd:Sequence:Type ] Message BUILD: [01:0000000174:ERRORE] NMAKE : U1073: don\'t know how to make \ ...… 查看全部問答∨ |
我是一名在校學生,有一些計算機專業課的基本功底(組成原理,體系結構,數據結構,操作系統···),現在想學習嵌入式linux開發 有些比較基本的問題 希望高手能夠詳細解答 非常感謝! 嵌入式系統開發(軟件方面)主要有 ...… 查看全部問答∨ |
100分求 高手解決 wince下 實現 png 透明圖片的顯示,如button 上貼 png圖片;和去掉 listctrl 控件 鼠標按下某項后 的焦點虛框( 如題。。。請高手 平臺:vs2005 vc/mfc 智能設備應用程序 解決一道給50。 2道都解決結貼再加50分… 查看全部問答∨ |
自帶的觸摸屏驅動是四線電阻直接連接的方式。現在采用的觸摸屏是通過串口連接的。觸摸屏按下后的信息會通過串口發送一串數據給主處理器。那么主處理器這邊是用串口流驅動的方式來寫觸摸屏驅動還是采用觸摸屏驅動方式來寫?1、若采用串口流驅動的方 ...… 查看全部問答∨ |
本人是STM32F初學者,想用STM32F103VC的FSMC接口外接一個單色屏,時序如圖所示;想請教一下各位,硬件怎么連接;聽說FSMC低8位地址和數據復用,那A0怎么處理?如果把FSMC設置成8位數據總線寬度,那剩下的高8位數據總線和其余的地址總線還可以 ...… 查看全部問答∨ |
下面是插入sd卡時的提示信息,總是掛載失敗/share $ Card stack checking, please wait ................................detect SD2.0 cardEnumerate_card successful for card in slot 0Check card stack end,now you can your job......... ...… 查看全部問答∨ |