1. SDIO 接口簡述
SDIO 接口用于訪問 MMC 卡,SD 存儲卡或者 SDI/O 卡的接口標準。
這里要做的是 Micro SDCard,也就是 TF Card(存儲卡)的操作。屬于第二種。
本實驗中使用的Micro SD卡屬于SDSC(標準容量,最大兩G)卡。介紹卡的種類是因為SD協議中的命令也支持這三種類型的卡,因此對STM32中的SDIO接口進行初始化后,上電后就要對接入的卡進行檢測、分類,這個過程是通過向卡發送一系列不同的命令,根據卡不同的響應來進行分類。
2. Micro SD 卡
Micro SD 卡就是 TF Card 的意思,是小的 SD Card。一張SD卡包括有存儲單元、存儲單元接口、電源檢測、卡及接口控制器和接口驅動器5個部分。存儲單元是存儲數據部件,存儲單元通過存儲單元接口與卡控制單元進行數據傳輸;電源檢測單元保證SD卡工作在合適的電壓下,如出現掉電或上狀態時,它會使控制單元和存儲單元接口復位;卡及接口控制單元控制SD卡的運行狀態,它包括有8個寄存器;接口驅動器控制SD卡引腳的輸入輸出。
可以看到,卡對外交互的引腳有:
CLK:時鐘線,由SDIO主機產生,即由STM32控制器輸出;
CMD:命令控制線,SDIO主機通過該線發送命令控制SD卡,如果命令要求SD卡提供應答(響應),SD卡也是通過該線傳輸應答信息;
D[0-3]:數據線,傳輸讀寫數據;SD卡可將D0拉低表示忙狀態;
VDD、VSS1、VSS2:電源和地信號。
上述引腳定義了整個卡的傳輸模式:即,支持4線并行傳輸,數據同步傳輸,支持命令的交互。
雖然可以共用總線,但不推薦多卡槽共用總線信號,要求一個單獨SD總線應該連接一個單獨的SD卡,總線的結構為:
具體的硬件原理圖如下所示:
測試用卡:某東上買的卡,品牌:Kingston,Micro SDHC,Class 10, 大小 16GB,直接插上卡座即可。
3. SD 協議
關于 SD Card 的所有協議定義,都遵循標準的 SD 組織定義的協議,參考:
《Physical Layer Simplified Specification V2.0》
協議中規定了物理層數據傳送,Timing,頻率,狀態,寄存器等等。
3.1 傳輸特性
SD 總線通信是基于命令和數據傳輸的。通訊由一個起始位("0"),由一個停止位("1")終止。
數據傳送 MSB,上升沿有效。
傳輸的時候,發送命令,僅僅使用 CMD 線,能夠支持開啟 4 線進行數據的發送和接收。
使用4數據線傳輸時,每次傳輸4bit數據,每根數據線都必須有起始位、終止位以及CRC位,CRC位每根數據線都要分別檢查,并把檢查結果匯總然后在數據傳輸完后通過D0線反饋給主機。
SD卡數據包有兩種格式,一種是常規數據(8bit寬),它先發低字節再發高字節,而每個字節則是先發高位再發低位
4線同步發送,每根線發送一個字節的其中兩個位,數據位在四線順序排列發送,DAT3數據線發較高位,DAT0數據線發較低位。
另外一種數據包發送格式是寬位數據包格式,對SD卡而言寬位數據包發送方式是針對SD卡SSR(SD狀態)寄存器內容發送的,SSR寄存器總共有512bit,在主機發出ACMD13命令后SD卡將SSR寄存器內容通過DAT線發送給主機。
3.2 CMD&RSP 命令以及響應
3.2.1 CMD 命令包格式
SD 命令格式固定為 48bit,都是通過 CMD 線連續傳輸的(數據線不參與):
SD命令的組成如下:
? 起始位和終止位:命令的主體包含在起始位與終止位之間,它們都只包含一個數據位,起始位為0,終止位為1。
? 傳輸標志:用于區分傳輸方向,該位為1時表示命令,方向為主機傳輸到SD卡,該位為0時表示響應,方向為SD卡傳輸到主機。
命令主體內容包括命令、地址信息/參數和CRC校驗三個部分。
? 命令號:它固定占用6bit,所以總共有64個命令(代號:CMD0~CMD63),每個命令都有特定的用途,部分命令不適用于SD卡操作,只是專門用于MMC卡或者SD I/O卡。
? 地址/參數:每個命令有32bit地址信息/參數用于命令附加內容,例如,廣播命令沒有地址信息,這32bit用于指定參數,而尋址命令這32bit用于指定目標SD卡的地址。
? CRC7校驗:長度為7bit的校驗位用于驗證命令傳輸內容正確性,如果發生外部干擾導致傳輸數據個別位狀態改變將導致校準失敗,也意味著命令傳輸失敗,SD卡不執行命令。
3.2.2 CMD 命令類型
SD命令有4種類型:
? 無響應廣播命令(bc),發送到所有卡,不返回任務響應;
? 帶響應廣播命令(bcr),發送到所有卡,同時接收來自所有卡響應;
? 尋址命令(ac),發送到選定卡,DAT線無數據傳輸;
? 尋址數據傳輸命令(adtc),發送到選定卡,DAT線有數據傳輸。
另外,SD卡主機模塊系統旨在為各種應用程序類型提供一個標準接口。在此環境中,需要有特定的客戶/應用程序功能。為實現這些功能,在標準中定義了兩種類型的通用命令:特定應用命令(ACMD)和常規命令(GEN_CMD)。要使用SD卡制造商特定的ACMD命令如ACMD6,需要在發送該命令之前發送CMD55命令,告知SD卡接下來的命令為特定應用命令。CMD55命令只對緊接的第一個命令有效,SD卡如果檢測到CMD55之后的第一條命令為ACMD則執行其特定應用功能,如果檢測發現不是ACMD命令,則執行標準命令。
任何的 ACMD 命令之前,都需要先發送 CMD55 命令,來標記此處將會發送一個 ACMD 命令。
3.2.3 CMD 命令交互
SD總線的基本交互是命令與響應交互,即,使用 CMD 線發送命令,然后接收來自 CMD 的 RSP(如果有響應的話):
SD數據是以塊(Black)形式傳輸的,SDHC卡數據塊長度一般為512字節,數據可以從主機到卡,也可以是從卡到主機。數據塊需要CRC位來保證數據傳輸成功。CRC位由SD卡系統硬件生成。STM32控制器可以控制使用單線或4線傳輸,本開發板設計使用4線傳輸。
SD數據傳輸支持單塊和多塊讀寫,它們分別對應不同的操作命令,多塊寫入還需要使用命令來停止整個寫入操作。數據寫入前需要檢測SD卡忙狀態,因為SD卡在接收到數據后編程到存儲區過程需要一定操作時間。SD卡忙狀態通過把D0線拉低表示。數據塊讀操作與之類似,只是無需忙狀態檢測。命令格式
3.2.4 CMD 命令描述
SD卡系統的命令被分為多個類,每個類支持一種"卡的功能設置"。下面列舉了SD卡部分命令信息,更多詳細信息可以參考SD簡易規格文件說明,表中填充位和保留位都必須被設置為0。
3.2.5 RSP 命令的響應
響應由SD卡向主機發出,部分命令要求SD卡作出響應,這些響應多用于反饋SD卡的狀態。SDIO總共有7個響應類型(代號:R1~R7),其中SD卡沒有R4、R5類型響應。特定的命令對應有特定的響應類型,比如當主機發送CMD3命令時,可以得到響應R6。與命令一樣,SD卡的響應也是通過CMD線連續傳輸的。根據響應內容大小可以分為短響應和長響應。短響應是 48bit 長度,只有R2類型是長響應,其長度為136bit。各個類型響應具體情況。
特別注意:除了R3類型之外,其他響應都使用CRC7校驗來校驗,對于R2類型是使用CID和CSD寄存器內部CRC7。
3.3 SD卡的模式
3.3.1 SD卡的操作模式
SD卡有多個版本,STM32控制器目前最高支持《Physical Layer Simplified Specification V2.0》定義的SD卡,STM32控制器對SD卡進行數據讀寫之前需要識別卡的種類:V1.0標準卡、V2.0標準卡、V2.0高容量卡或者不被識別卡。
SD卡系統(包括主機和SD卡)定義了兩種操作模式:卡識別模式和數據傳輸模式。在系統復位后,主機處于卡識別模式,尋找總線上可用的SDIO設備;同時,SD卡也處于卡識別模式,直到被主機識別到,即當SD卡接收到SEND_RCA(CMD3)命令后,SD卡就會進入數據傳輸模式,而主機在總線上所有卡被識別后也進入數據傳輸模式。在每個操作模式下,SD卡都有幾種狀態,通過命令控制實現卡狀態的切換。
3.3.2 卡識別模式
在卡識別模式下,主機會復位所有處于"卡識別模式"的SD卡,確認其工作電壓范圍,識別SD卡類型,并且獲取SD卡的相對地址(卡相對地址較短,便于尋址)。在卡識別過程中,要求SD卡工作在識別時鐘頻率FOD的狀態下。卡識別模式下SD卡狀態轉換:
主機上電后,所有卡處于空閑狀態,包括當前處于無效狀態的卡。主機也可以發送GO_IDLE_STATE(CMD0)讓所有卡軟復位從而進入空閑狀態,但當前處于無效狀態的卡并不會復位。
主機在開始與卡通信前,需要先確定雙方在互相支持的電壓范圍內。SD卡有一個電壓支持范圍,主機當前電壓必須在該范圍可能才能與卡正常通信。SEND_IF_COND(CMD8)命令就是用于驗證卡接口操作條件的(主要是電壓支持)。卡會根據命令的參數來檢測操作條件匹配性,如果卡支持主機電壓就產生響應,否則不響應。而主機則根據響應內容確定卡的電壓匹配性。CMD8是SD卡標準V2.0版本才有的新命令,所以如果主機有接收到響應,可以判斷卡為V2.0或更高版本SD卡。
SD_SEND_OP_COND(ACMD41)命令可以識別或拒絕不匹配它的電壓范圍的卡。ACMD41命令的VDD電壓參數用于設置主機支持電壓范圍,卡響應會返回卡支持的電壓范圍。對于對CMD8有響應的卡,把ACMD41命令的HCS位設置為1,可以測試卡的容量類型,如果卡響應的CCS位為1說明為高容量SD卡,否則為標準卡。卡在響應ACMD41之后進入準備狀態,不響應ACMD41的卡為不可用卡,進入無效狀態。ACMD41是應用特定命令,發送該命令之前必須先發CMD55。
ALL_SEND_CID(CMD2)用來控制所有卡返回它們的卡識別號(CID),處于準備狀態的卡在發送CID之后就進入識別狀態。之后主機就發送SEND_RELATIVE_ADDR(CMD3)命令,讓卡自己推薦一個相對地址(RCA)并響應命令。這個RCA是16bit地址,而CID是128bit地址,使用RCA簡化通信。卡在接收到CMD3并發出響應后就進入數據傳輸模式,并處于待機狀態,主機在獲取所有卡RCA之后也進入數據傳輸模式。
3.3.3 數據傳輸模式
只有SD卡系統處于數據傳輸模式下才可以進行數據讀寫操作。數據傳輸模式下可以將主機SD時鐘頻率設置為FPP,默認最高為25MHz,頻率切換可以通過CMD4命令來實現。數據傳輸模式下,SD卡狀態轉換過程:
CMD7用來選定和取消指定的卡,卡在待機狀態下還不能進行數據通信,因為總線上可能有多個卡都是出于待機狀態,必須選擇一個RCA地址目標卡使其進入傳輸狀態才可以進行數據通信。同時通過CMD7命令也可以讓已經被選擇的目標卡返回到待機狀態。
數據傳輸模式下的數據通信都是主機和目標卡之間通過尋址命令點對點進行的。卡處于傳輸狀態下可以使用表 362中面向塊的讀寫以及擦除命令對卡進行數據讀寫、擦除。CMD12可以中斷正在進行的數據通信,讓卡返回到傳輸狀態。CMD0和CMD15會中止任何數據編程操作,返回卡識別模式,這可能導致卡數據被損壞。
3.4 SD卡時鐘頻率
識別模式下的SD時鐘需要在 400KHz,識別模式轉成傳送模式后,可以直接將頻率提高到 24MHz
3.5 SD卡寬總線選擇
啟動上電默認進入識別模式,默認使用總線寬度為 1 bit,在進入傳輸模式后,可以先獲取到卡的 SCR 寄存器,再在寄存器中找到對應的是否支持 4 bit 模式的標志位,最后使用 CMD55 + ACMD6 來告訴 SD Card 開啟 4bit 模式傳輸。
3.6 SD 卡內部寄存器描述
上述寄存器都是通過發送特定的指令進行訪問的。
其中, CSD 寄存器表征 SD Card 的大小,Block Size,以及如果是 V2 一下的卡的話,是否支持 Block 內進行讀寫。
CSR 狀態寄存器,返回的是卡當前的狀態,能夠用于區分當前卡是否正在 Programing 等等。
3.7 SD 卡讀/寫/擦除
3.7.1 SD 卡讀
SD 卡的讀,分為兩種方式的讀:
讀一個 block:發送 CMD17 命令
讀多個 block:發送 CMD18 命令,需要主動發送 CMD12 停止傳送命令才會停止動作。
3.7.2 SD 卡寫
寫一個 block:發送 CMD24 命令
寫多個 block:發送 CMD25 命令,需要主動發送 CMD12 停止傳送命令才會停止動作。
與讀不一樣,寫的話,數據到達 SD Card 側的硬件 Buffer 后,需要一些時間進行內部的 Programme,此刻,對外就是一個 busy的狀態:
這里需要注意的是,在 Spec 中描述:
在多塊連續寫入的時候,需要先去 pre-erase,即使用 CMD55+ACMD23 命令進行預擦除
3.7.3 SD 卡擦除
卡的擦除操作,順序發送 CMD32(擦除的起始地址), CMD33(擦除的結束地址), CMD38(開始擦除)。
4. STM32F103ZTE6 的 SD 功能
SDIO包含2個部分:
● SDIO適配器模塊:實現所有MMC/SD/SD I/O卡的相關功能,如時鐘的產生、命令和數據的傳送。
● AHB總線接口:操作SDIO適配器模塊中的寄存器,并產生中斷和 DMA 請求信號。
復位后默認情況下SDIO_D0用于數據傳輸。初始化后主機可以改變數據總線的寬度。
4.1 SDIO 適配器
4.2 SDIO 控制單元
控制單元負責電源管理和時鐘分頻管理。時鐘部分,來自 AHB 的時鐘。
4.3 SDIO 命令通道
命令通道單元向卡發送命令并從卡接收響應。
命令通道有對應的硬件狀態機實現:
命令通道狀態機(CPSM):當寫入命令寄存器并設置了使能位,開始發送命令。命令發送完成時,命令通道狀態機(CPSM)設置狀態標志并在不需要響應時進入空閑狀態(見下圖)。當收到響應后,接收到的CRC碼將會與內部產生的CRC碼比較,然后設置相應的狀態標志。
當進入等待(Wait)狀態時,命令定時器開始運行;當CPSM進入接收(Receive)狀態之前,產生了超時,則設置超時標志并進入空閑(Idle)狀態。
注意:命令超時固定為 64 個 SDIO_CK 時鐘周期。
注意:CPSM 保持在空閑狀態至少 8 個 SDIO_CK 周期,以滿足 NCC 和 NRC 時序限制。 NCC 是兩個主機命令間的最小間隔; NRC 是主機命令與卡響應之間的最小間隔。(這個是 Spec 的規定)
狀態機如下:
4.4 SDIO 數據通道
數據通道子單元在主機與卡之間傳輸數據。下圖是數據通道的框圖。
在時鐘控制寄存器中可以配置卡的數據總線寬度。如果選擇了4位總線模式,則每個時鐘周期四條數據信號線(SDIO_D[3:0])上將傳輸4位數據;如果選擇了8位總線模式,則每個時鐘周期八條數據信號線(SDIO_D[7:0])上將傳輸8位數據;如果沒有選擇寬總線模式,則每個時鐘周期只在SDIO_D0上傳輸1位數據。
根據傳輸的方向(發送或接收),使能時數據通道狀態機(DPSM)將進入Wait_S或Wait_R狀態:
● 發送:DPSM進入Wait_S狀態。如果發送FIFO中有數據,則DPSM進入發送狀態,同時數據通道子單元開始向卡發送數據。
● 接收:DPSM進入Wait_R狀態并等待開始位;當收到開始位時,DPSM進入接收狀態,同時數據通道子單元開始從卡接收數據。
數據通道狀態機(DPSM):DPSM工作在SDIO_CK頻率,卡總線信號與SDIO_CK的上升沿同步。DPSM有6個狀態,
4.5 數據FIFO
數據FIFO(先進先出)部件是一個數據緩沖器,帶發送和接收單元。控制器的FIFO包含寬度為32bit、深度為32字的數據緩沖器和發送/接收邏輯。其中SDIO狀態寄存器(SDIO_STA)的TXACT位用于指示當前正在發送數據,RXACT位指示當前正在接收數據,這兩個位不可能同時為1。
? 當TXACT為1時,可以通過APB2接口將數據寫入到傳輸FIFO。
? 當RXACT為1時,接收FIFO存放從數據路徑部件接收到的數據。
根據FIFO空或滿狀態會把SDIO_STA寄存器位值1,并可以產生中斷和DMA請求。
5. 代碼流程
1. 配置 NVIC 控制器,開啟 SDIO 中斷
2. 配置 GPIO 口,復用推挽輸出
3. 開啟 SDIO/DMA2 模塊時鐘
4. 進入卡上電流程
5. 進入卡的初始化流程(識別),并轉換到 Transfer 模式
6. 提高 SDCLK 的頻率
7. 選擇卡
8. 開啟 4 bit 模式
5.1 識別模式代碼
NVIC 和 GPIO ,SDIO 和 DMA2 的基礎配置如下:
static void SK_SD_NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
static void SK_SD_GPIOConfig(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*!< GPIOC and GPIOD Periph clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD , ENABLE);
/*!< Configure PC.08, PC.09, PC.10, PC.11, PC.12 pin: D0, D1, D2, D3, CLK pin */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/*!< Configure PD.02 CMD line */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
static void SK_SDIO_Config(void)
{
/*!< Enable the SDIO AHB Clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SDIO, ENABLE);
SDIO_DeInit();
}
static void SK_SDIO_DMA2Config(void)
{
/*!< Enable the DMA2 Clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
}
這里我將所有的命令CMD 和 回應 RSP的 檢查全部封裝成為函數的形式:
/************************** SD CMD Defination Start *********************************/
void SK_SdioSendCmd_0(void)
{
SDIO_CmdInitTypeDef stSdioCmdInit;
stSdioCmdInit.SDIO_Argument = 0x0;
stSdioCmdInit.SDIO_CmdIndex = SD_CMD_GO_IDLE_STATE; //cmd0
stSdioCmdInit.SDIO_Response = SDIO_Response_No;
stSdioCmdInit.SDIO_Wait = SDIO_Wait_No;
stSdioCmdInit.SDIO_CPSM = SDIO_CPSM_Enable;
SDIO_SendCommand(&stSdioCmdInit);
}
void SK_SdioSendCmd_8(void)
{
SDIO_CmdInitTypeDef stSdioCmdInit;
stSdioCmdInit.SDIO_Argument = SD_CHECK_PATTERN;
stSdioCmdInit.SDIO_CmdIndex = SDIO_SEND_IF_COND; // cmd8
stSdioCmdInit.SDIO_Response = SDIO_Response_Short;// Rsp = r7
stSdioCmdInit.SDIO_Wait = SDIO_Wait_No;
stSdioCmdInit.SDIO_CPSM = SDIO_CPSM_Enable;
SDIO_SendCommand(&stSdioCmdInit);
}
void SK_SdioSendCmd_55(uint32_t rca)
{
SDIO_CmdInitTypeDef stSdioCmdInit;
stSdioCmdInit.SDIO_Argument = (uint32_t) rca << 16;
stSdioCmdInit.SDIO_CmdIndex = SD_CMD_APP_CMD;
上一篇:STM32F103ZET6 — SPI
下一篇:STM32 啟動過程簡述
推薦閱讀
史海拾趣
在追求技術創新和商業成功的同時,High Tech Chips Inc還積極踐行環保和可持續發展理念。公司致力于開發綠色、低碳的芯片產品和技術解決方案,減少生產過程中的能源消耗和環境污染。同時,公司還積極參與社會公益活動,支持教育、環保等領域的項目發展。這些舉措不僅提升了公司的社會形象和品牌價值,也為公司的長遠發展注入了新的動力。
請注意,以上故事均為虛構內容,旨在展示電子行業高科技芯片公司可能的發展路徑和策略。在實際情況中,不同公司的發展故事會因其獨特的背景、資源和市場環境而有所不同。
在追求技術創新和商業成功的同時,High Tech Chips Inc還積極踐行環保和可持續發展理念。公司致力于開發綠色、低碳的芯片產品和技術解決方案,減少生產過程中的能源消耗和環境污染。同時,公司還積極參與社會公益活動,支持教育、環保等領域的項目發展。這些舉措不僅提升了公司的社會形象和品牌價值,也為公司的長遠發展注入了新的動力。
請注意,以上故事均為虛構內容,旨在展示電子行業高科技芯片公司可能的發展路徑和策略。在實際情況中,不同公司的發展故事會因其獨特的背景、資源和市場環境而有所不同。
面對全球半導體市場的周期性波動和貿易環境的不確定性,High Tech Chips Inc展現出了強大的應變能力和靈活性。在市場需求下滑時,公司迅速調整產品結構,加大在物聯網、5G通信等新興領域的研發投入。同時,通過優化供應鏈管理、提高生產效率等方式降低成本,保持了良好的盈利能力。這種靈活應對市場挑戰的策略使得公司在行業低谷期依然能夠穩健發展。
High Tech Chips Inc成立之初,便專注于研發高性能的AI芯片。在公司創始人李博士的帶領下,團隊突破了傳統芯片設計的瓶頸,開發出了一款具有超低功耗和高效能比的AI加速器芯片。這款芯片迅速獲得了市場的認可,被廣泛應用于智能手機、智能家居和自動駕駛等領域。隨著技術的不斷迭代和產品的持續優化,High Tech Chips Inc逐漸在AI芯片市場占據了一席之地,并成為了行業內的技術領先者。
High Tech Chips Inc成立之初,便專注于研發高性能的AI芯片。在公司創始人李博士的帶領下,團隊突破了傳統芯片設計的瓶頸,開發出了一款具有超低功耗和高效能比的AI加速器芯片。這款芯片迅速獲得了市場的認可,被廣泛應用于智能手機、智能家居和自動駕駛等領域。隨著技術的不斷迭代和產品的持續優化,High Tech Chips Inc逐漸在AI芯片市場占據了一席之地,并成為了行業內的技術領先者。
在市場競爭日益激烈的情況下,Chiefdom Electronic Co Ltd注重創新營銷策略,以吸引更多消費者的關注。公司推出了一系列具有針對性的廣告宣傳活動,利用社交媒體、網絡直播等新媒體渠道進行廣泛傳播。同時,公司還積極參與各類電子展會和論壇,展示其最新技術和產品,與潛在客戶建立聯系。這些創新營銷策略使得公司的品牌知名度和美譽度不斷提升,進而帶動了銷售業績的穩步增長。
比如到站時,車上會有語音說“到桃源村了,請帶好行李下車” 這個聲音是司機通過按了啥東東出來的,還是通過啥技術知道桃源村站到了,隨后自動語音報站 這些系統大多都是WINCE OS吧 有實際整過這方面的朋友沒? 如果還要司機去操作啥發出來的聲 ...… 查看全部問答∨ |
|
是MAX3000A系列中的3064a,工作電壓是3.3v,可我不小心接了個4點多伏的電壓...是不是我的cpld燒了啊? 因為我下程序下不了.老提示說,下載線沒連好… 查看全部問答∨ |
求問:DM642的I2C模塊的I2C input clock(SYSCLK2)是多少啊? 不把預定標模塊時鐘設置在6.7~13.3MHz則I2C模塊無法工作嗎? 求大神回答啊… 查看全部問答∨ |
本帖最后由 dontium 于 2015-1-23 11:10 編輯 《運算放大器噪聲優化手冊》閱讀【Ⅷ】,已經是最后一篇了,想著一定要有始有終,一本書讀完竟然跨越了1個多月的時間,實在是不該。書的最后三章主講應用,相對于前面幾章難度有拔高。其中第九章 ...… 查看全部問答∨ |
樓主在這邊給大家介紹下如何使用PopMetal的GPIO。先講過程,再講原理吧, 該驅動需要涉及到的知識點:1,DTS設備樹的作用,2,platform虛擬總線驅動的編寫。 第一步,添加DTS節點 在/kernel/arch/arm/boot/dts/rockchip.dts下添加如下內容。 下 ...… 查看全部問答∨ |