历史上的今天

今天是:2024年11月04日(星期一)

正在发生

2021年11月04日 | STM32F103ZET6 — SDIO (Mirco SDCard)

发布者:alpha12 来源: eefocus关键字:STM32F103ZET6  SDIO  Mirco  SDCard 手机看文章 扫描二维码
随时随地手机看文章

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。

image.png

image.png

image.png

image.png

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。

image.png

image.png

image.png

Spec 中的描述为:

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卡都有几种状态,通过命令控制实现卡状态的切换。

image.png

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 卡内部寄存器描述

image.png

上述寄存器都是通过发送特定的指令进行访问的。


其中, 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;

[1] [2] [3] [4] [5] [6] [7]
关键字:STM32F103ZET6  SDIO  Mirco  SDCard 引用地址:STM32F103ZET6 — SDIO (Mirco SDCard)

上一篇:STM32F103ZET6 — SPI
下一篇:STM32 启动过程简述

推荐阅读

        以色列资安业者Armis本周揭露,由德州仪器(Texas Instruments,TI)所生产的低功耗蓝牙(Bluetooth Low Energy,BLE)芯片含有两个重大的安全漏洞, 成功开采相关漏洞的黑客将可入侵企业网络,掌控无线AP或散布恶意软件,包括思科、Meraki与Aruba的无线AP都采用了含有漏洞的蓝牙芯片,让全球数百万个企业AP拉警报。        A...
中国储能网讯:10月24日,中央政治局就区块链技术发展现状和趋势进行第十八次集体学习,明确提出把区块链作为核心技术自主创新的重要突破口,加快推动区块链技术和产业创新发展,这标志着区块链技术正式上升为国家重大战略。一个月前,德国联邦政府也发布区块链战略,明确了五大领域的行动措施,确定了政府在区块链领域的优先职责。中德两国已经率先将区...
前几天,一直在寻找NAND Flash模拟U盘程序无法格式化的问题。在中秋月圆之夜,还苦逼地在实验室调代码,也许是杭州大圆月的原因,今晚感觉整人特别亢奋,效率也特别高,灵感也多。终于,在不懈的努力下,找到代码中的害群之马,把无法格式的问题解决掉了。下面就来说说。这几天一直在想问题出在哪里,不知道自己的代码跟官方的例程对照了多少次,把不一样...
“接地”想必很多工程师对这个词语并不陌生,由于受工业现场控制的限制,致使一些电子测量仪器仪表的正常使用受到干扰。为了抑制干扰信号,具有良好的接地就非常必要。一、仪器接地的重要性所谓接地,就是将电气设备的机壳及接地点与大地间作良好的连接。在工业企业的实际控制系统中,干扰源来自各方面,干扰因素错综复杂。所受干扰信号的大小不仅与仪器的...

史海拾趣

问答坊 | AI 解惑

有没有关于74LS164方面的资料啊

有关于74LS164方面的资料发一点上来,谢谢了…

查看全部问答∨

PCB行业中关于RoHS指令有害物质的检测方法

要求2006年7月1日开始,电子电气设备中禁止使用铅、汞、六价铬、镉和多溴联苯(PBB)、多溴二苯醚(PBDE);其中镉限量指标 100PPm(0.01%),另五种限量l000ppm(0.1%)。企业出口欧盟的产品都需符合以上的限量要求,并且要展示相应的证明文件, ...…

查看全部问答∨

浅说三极管的开关应用

本帖最后由 paulhyde 于 2014-9-15 03:44 编辑 三极管,电子元件,在我们平时所看到的电路板中有很多,三极管工作起来呢就像个水龙头,一个进水的的地方(NPN的集电极,PNP的射电极),一个出水的地方(NPN的射电极),还有就是龙头的把手了(基极 ...…

查看全部问答∨

用DDK做的驱动中,中断为什么不能实现

我做的是PCI的驱动,用VC6 DDK来实现。板卡桥芯片用的是9052做的驱动中设置中断可是没有反应这是为什么呢?将9052的 LINTi1接了个开关,模拟实现中断的电平输入。相关程序如下: //获取中断资源 case CmResourceTypeInterrupt:     &n ...…

查看全部问答∨

platform builder 4.2如何编译最快?

就改动BSP某一个文件的一个地方,如何快速编译?…

查看全部问答∨

关于过程性连续赋值语句

各位大侠,我想问下,过程性连续赋值语句的最大特点是什么啊?   我还想问下,过程性连续赋值语句对于reg变量是不是不支持啊? 我最近用quartusII仿真程序,在全编译的时候出现procedural continuous assignment to register is not su ...…

查看全部问答∨

evc 下如何建立ATL/WTL 的工程?

我下载了WTL80,发现该目录下有个文件夹“AppWizCE”,要怎样才能使EVC下能够通过AppWizard来创建ATL/WTL个工程呢? 如果不能通过AppWizard来创建,evc下如何建立ATL/WTL的exe工程?…

查看全部问答∨

Wince程序在设备上运行报异常!!!

我将bin目录下的exe文件和sdf数据库文件复制到wince设备上,运行exe文件就报异常。 异常信息: Error SmartDevice.exe MissingMethodException File or assembly name \'System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKe ...…

查看全部问答∨

欢迎申请版主

欢迎申请www.devdiv.net版主…

查看全部问答∨

大家使用IAR编译STM32系列工程都使用优化功能吗?

最近发现一个问题,使用IAR的编译优化的时候,对采样数据有很大的影响。现在做的这个项目使用STM32101 64K的片子,程序到47K了,但还没有做完,于是想试下IAR4.41的优化功能,选择High(Maximun Optimization),编译出来有31K多,心 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved