精华内容
下载资源
问答
  • SD卡电路原理

    2012-06-19 20:04:29
    SD卡电路原理
  • USB接口的数据采集原理图(电路图) USB接口的数据采集原理图(电路图).
  • SD引脚 电路图及工作原理介绍

    万次阅读 多人点赞 2016-04-11 11:00:27
    SD在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储。在诸如MP3、数码相机等设备上也都采用SD作为其存储设备。SD之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便...

    转自:http://blog.csdn.net/zhangyanquen/article/details/6658802

    SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。

    (1) SD卡的引脚定义

    SD卡引脚功能详述:

    引脚
    编号
    SD模式         SPI模式
    名称 类型 描述 名称 类型 描述
    1 CD/DAT3 IO或PP
    卡检测/
    数据线3
    #CS I 片选
    2 CMD PP
    命令/
    回应
    DI I 数据输入
    3 VSS1 S 电源地 VSS S 电源地
    4 VDD S 电源 VDD S 电源
    5 CLK I 时钟 SCLK I 时钟
    6 VSS2 S 电源地 VSS2 S 电源地
    7 DAT0 IO或PP 数据线0 DO O或PP 数据输出
    8 DAT1 IO或PP 数据线1 RSV    
    9 DAT2 IO或PP 数据线2 RSV    

     

    注:S:电源供给  I:输入 O:采用推拉驱动的输出
    PP:采用推拉驱动的输入输出

     

    SD卡SPI模式下与单片机的连接图:

    SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。

    (2) SPI方式驱动SD卡的方法
         SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时向其写入第一个命令时进行的。以下介绍SD卡的驱动方法,只实现简单的扇区读写。
    1) 命令与数据传输
    1. 命令传输
    SD卡自身有完备的命令系统,以实现各项操作。命令格式如下:

    命令的传输过程采用发送应答机制,过程如下:

    每一个命令都有自己命令应答格式。在SPI模式中定义了三种应答格式,如下表所示:

    字节 含义
     
     
     
    1
    7 开始位,始终为0
    6 参数错误
    5 地址错误
    4 擦除序列错误
    3 CRC错误
    2 非法命令
    1 擦除复位
    0 闲置状态

     

     

    字节
    含义
     
     
     
    1
    7
    开始位,始终为0
    6
    参数错误
    5
    地址错误
    4
    擦除序列错误
    3
    CRC错误
    2
    非法命令
    1
    擦除复位
    0
    闲置状态
     
     
     
    2
    7
    溢出,CSD覆盖
    6
    擦除参数
    5
    写保护非法
    4
    卡ECC失败
    3
    卡控制器错误
    2
    未知错误
    1
    写保护擦除跳过,锁/解锁失败
    0
    锁卡

     

    字节 含义
     
     
     
    1
    7 开始位,始终为0
    6 参数错误
    5 地址错误
    4 擦除序列错误
    3 CRC错误
    2 非法命令
    1 擦除复位
    0 闲置状态
    2~5 全部 操作条件寄存器,高位在前


    写命令的例程:
    //-----------------------------------------------------------------------------------------------
      向SD卡中写入命令,并返回回应的第二个字节
    //-----------------------------------------------------------------------------------------------
    unsigned char Write_Command_SD(unsigned char *CMD)
    {
       unsigned char tmp;
       unsigned char retry=0;
       unsigned char i;

       //禁止SD卡片选
       SPI_CS=1;
       //发送8个时钟信号
       Write_Byte_SD(0xFF);
       //使能SD卡片选
       SPI_CS=0;

       //向SD卡发送6字节命令
       for (i=0;i<0x06;i++)
       {
          Write_Byte_SD(*CMD++);
       }
      
       //获得16位的回应
       Read_Byte_SD(); //read the first byte,ignore it.
       do
       {  //读取后8位
          tmp = Read_Byte_SD();
          retry++;
       }
       while((tmp==0xff)&&(retry<100));
       return(tmp);
    }

    2) 初始化
    SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。在初始化成功后,应尽量提高SPI的速率。在刚开始要先发送至少74个时钟信号,这是必须的。在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功。随后就是写入两个命令CMD0与CMD1,使SD卡进入SPI模式
               初始化时序图:

       初始化例程:
    //--------------------------------------------------------------------------
        初始化SD卡到SPI模式
    //--------------------------------------------------------------------------
    unsigned char SD_Init()

       unsigned char retry,temp;
       unsigned char i;
       unsigned char CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};
    SD_Port_Init(); //初始化驱动端口
      
       Init_Flag=1; //将初始化标志置1

     

       for (i=0;i<0x0f;i++)
       {
          Write_Byte_SD(0xff); //发送至少74个时钟信号
       }
     
       //向SD卡发送CMD0
       retry=0;
       do
       { //为了能够成功写入CMD0,在这里写200次
         temp=Write_Command_SD(CMD);
         retry++;
         if(retry==200)
         { //超过200次
           return(INIT_CMD0_ERROR);//CMD0 Error!
         }
       }
       while(temp!=1);  //回应01h,停止写入
      
       //发送CMD1到SD卡
       CMD[0] = 0x41; //CMD1
       CMD[5] = 0xFF;
       retry=0;
       do
       { //为了能成功写入CMD1,写100次
         temp=Write_Command_SD(CMD);
         retry++;
         if(retry==100)
         { //超过100次
           return(INIT_CMD1_ERROR);//CMD1 Error!
         }
       }
       while(temp!=0);//回应00h停止写入
      
       Init_Flag=0; //初始化完毕,初始化标志清零
      
       SPI_CS=1;  //片选无效
       return(0); //初始化成功
    }
    3) 读取CID
    CID寄存器存储了SD卡的标识码。每一个卡都有唯一的标识码。
    CID寄存器长度为128位。它的寄存器结构如下:
     

     

    名称 数据宽度 CID划分
    生产标识号 MID 8 [127:120]
    OEM/应用标识 OID 16 [119:104]
    产品名称 PNM 40 [103:64]
    产品版本 PRV 8 [63:56]
    产品序列号 PSN 32 [55:24]
    保留 4 [23:20]
    生产日期 MDT 12 [19:8]
    CRC7校验合 CRC 7 [7:1]
    未使用,始终为1 1 [0:0]

     

    它的读取时序如下:

    与此时序相对应的程序如下:
    //------------------------------------------------------------------------------------
        读取SD卡的CID寄存器   16字节   成功返回0
    //-------------------------------------------------------------------------------------
    unsigned char Read_CID_SD(unsigned char *Buffer)
    {
       //读取CID寄存器的命令
       unsigned char CMD[] = {0x4A,0x00,0x00,0x00,0x00,0xFF};
       unsigned char temp;
       temp=SD_Read_Block(CMD,Buffer,16); //read 16 bytes
       return(temp);
    }

    4)读取CSD
    CSD(Card-Specific Data)寄存器提供了读写SD卡的一些信息。其中的一些单元可以由用户重新编程。具体的CSD结构如下:

     

    名称
    数据宽度
    单元类型
    CSD划分
    CSD结构
    CSD_STRUCTURE
    2
    R
    [127:126]
    保留
    -
    6
    R
    [125:120]
    数据读取时间1
    TAAC
    8
    R
    [119:112]
    数据在CLK周期内读取时间2(NSAC*100)
    NSAC
    8
    R
    [111:104]
    最大数据传输率
    TRAN_SPEED
    8
    R
    [103:96]
    卡命令集合
    CCC
    12
    R
    [95:84]
    最大读取数据块长
    READ_BL_LEN
    4
    R
    [83:80]
    允许读的部分块
    READ_BL_PARTIAL
    1
    R
    [79:79]
    非线写块
    WRITE_BLK_MISALIGN
    1
    R
    [78:78]
    非线读块
    READ_BLK_MISALIGN
    1
    R
    [77:77]
    DSR条件
    DSR_IMP
    1
    R
    [76:76]
    保留
    -
    2
    R
    [75:74]
    设备容量
    C_SIZE
    12
    R
    [73:62]
    最大读取电流@VDDmin
    VDD_R_CURR_MIN
    3
    R
    [61:59]
    最大读取电流@VDDmax
    VDD_R_CURR_MAX
    3
    R
    [58:56]
    最大写电流@VDDmin
    VDD_W_CURR_MIN
    3
    R
    [55:53]
    最大写电流@VDDmax
    VDD_W_CURR_MAX
    3
    R
    [52:50]
    设备容量乘子
    C_SIZE_MULT
    3
    R
    [49:47]
    擦除单块使能
    ERASE_BLK_EN
    1
    R
    [46:46]
    擦除扇区大小
    SECTOR_SIZE
    7
    R
    [45:39]
    写保护群大小
    WP_GRP_SIZE
    7
    R
    [38:32]
    写保护群使能
    WP_GRP_ENABLE
    1
    R
    [31:31]
    保留
    -
    2
    R
    [30:29]
    写速度因子
    R2W_FACTOR
    3
    R
    [28:26]
    最大写数据块长度
    WRITE_BL_LEN
    4
    R
    [25:22]
    允许写的部分部
    WRITE_BL_PARTIAL
    1
    R
    [21:21]
    保留
    -
    5
    R
    [20:16]
    文件系统群
    FILE_OFRMAT_GRP
    1
    R/W
    [15:15]
    拷贝标志
    COPY
    1
    R/W
    [14:14]
    永久写保护
    PERM_WRITE_PROTECT
    1
    R/W
    [13:13]
    暂时写保护
    TMP_WRITE_PROTECT
    1
    R/W
    [12:12]
    文件系统
    FIL_FORMAT
    2
    R/W
    [11:10]
    保留
    -
    2
    R/W
    [9:8]
    CRC
    CRC
    7
    R/W
    [7:1]
    未用,始终为1
    -
    1
     
    [0:0]

     

    读取CSD 的时序:

    相应的程序例程如下:
    //-----------------------------------------------------------------------------------------
        读SD卡的CSD寄存器   共16字节    返回0说明读取成功
    //-----------------------------------------------------------------------------------------
    unsigned char Read_CSD_SD(unsigned char *Buffer)

       //读取CSD寄存器的命令
       unsigned char CMD[] = {0x49,0x00,0x00,0x00,0x00,0xFF};
       unsigned char temp;
       temp=SD_Read_Block(CMD,Buffer,16); //read 16 bytes
       return(temp);
    }


    4) 

    读取SD卡信息
    综合上面对CID与CSD寄存器的读取,可以知道很多关于SD卡的信息,以下程序可以获取这些信息。如下:
    //-----------------------------------------------------------------------------------------------
    //返回
    //  SD卡的容量,单位为M
    //  sector count and multiplier MB are in
    u08 == C_SIZE / (2^(9-C_SIZE_MULT))
    //  SD卡的名称
    //-----------------------------------------------------------------------------------------------
    void SD_get_volume_info()
    {  
        unsigned char i;
        unsigned char c_temp[5];
        VOLUME_INFO_TYPE SD_volume_Info,*vinf;
        vinf=&SD_volume_Info; //Init the pointoer;
    /读取CSD寄存器
        Read_CSD_SD(sectorBuffer.dat);
    //获取总扇区数
     vinf->sector_count = sectorBuffer.dat[6] & 0x03;
     vinf->sector_count <<= 8;
     vinf->sector_count += sectorBuffer.dat[7];
     vinf->sector_count <<= 2;
     vinf->sector_count += (sectorBuffer.dat[8] & 0xc0) >> 6;
     // 获取multiplier
     vinf->sector_multiply = sectorBuffer.dat[9] & 0x03;
     vinf->sector_multiply <<= 1;
     vinf->sector_multiply += (sectorBuffer.dat[10] & 0x80) >> 7;
    //获取SD卡的容量
     vinf->size_MB = vinf->sector_count >> (9-vinf->sector_multiply);
     // get the name of the card
     Read_CID_SD(sectorBuffer.dat);
     vinf->name[0] = sectorBuffer.dat[3];
     vinf->name[1] = sectorBuffer.dat[4];
     vinf->name[2] = sectorBuffer.dat[5];
     vinf->name[3] = sectorBuffer.dat[6];
     vinf->name[4] = sectorBuffer.dat[7];
     vinf->name[5] = 0x00; //end flag 
    }
             以上程序将信息装载到一个结构体中,这个结构体的定义如下:
    typedef struct SD_VOLUME_INFO
    { //SD/SD Card info
      unsigned int  size_MB;
      unsigned char sector_multiply;
      unsigned int  sector_count;
      unsigned char name[6];
    } VOLUME_INFO_TYPE;


    展开全文
  • IPAD3点位 机型:IPAD3 故障1:不充电,1台是插充电器无反应,2台是有一个USB连接标志 故障2:进水,不开机,漏电,主板没有维修记录 故障3:开机灰屛 ipad3涉及到的重要芯片: 橙色:苹果343S0561集成电路芯片(疑似...
  • SD引脚 电路图及工作原理介绍 .

    千次阅读 2013-10-14 20:29:52
    SD在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储。在诸如MP3、数码相机等设备上也都采用SD作为其存储设备。SD之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便...

    SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。

    (1) SD卡的引脚定义

    SD卡引脚功能详述:

    引脚
    编号
    SD模式
            SPI模式
    名称
    类型
    描述
    名称
    类型
    描述
    1
    CD/DAT3
    IO或PP
    卡检测/
    数据线3
    #CS
    I
    片选
    2
    CMD
    PP
    命令/
    回应
    DI
    I
    数据输入
    3
    VSS1
    S
    电源地
    VSS
    S
    电源地
    4
    VDD
    S
    电源
    VDD
    S
    电源
    5
    CLK
    I
    时钟
    SCLK
    I
    时钟
    6
    VSS2
    S
    电源地
    VSS2
    S
    电源地
    7
    DAT0
    IO或PP
    数据线0
    DO
    O或PP
    数据输出
    8
    DAT1
    IO或PP
    数据线1
    RSV
     
     
    9
    DAT2
    IO或PP
    数据线2
    RSV
     
     

     

    注:S:电源供给  I:输入 O:采用推拉驱动的输出
    PP:采用推拉驱动的输入输出

     

    SD卡SPI模式下与单片机的连接图:

    SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。

    (2) SPI方式驱动SD卡的方法
         SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时向其写入第一个命令时进行的。以下介绍SD卡的驱动方法,只实现简单的扇区读写。
    1) 命令与数据传输
    1. 命令传输
    SD卡自身有完备的命令系统,以实现各项操作。命令格式如下:

    命令的传输过程采用发送应答机制,过程如下:

    每一个命令都有自己命令应答格式。在SPI模式中定义了三种应答格式,如下表所示:

    字节
    含义
     
     
     
    1
    7
    开始位,始终为0
    6
    参数错误
    5
    地址错误
    4
    擦除序列错误
    3
    CRC错误
    2
    非法命令
    1
    擦除复位
    0
    闲置状态

     

     

    字节
    含义
     
     
     
    1
    7
    开始位,始终为0
    6
    参数错误
    5
    地址错误
    4
    擦除序列错误
    3
    CRC错误
    2
    非法命令
    1
    擦除复位
    0
    闲置状态
     
     
     
    2
    7
    溢出,CSD覆盖
    6
    擦除参数
    5
    写保护非法
    4
    卡ECC失败
    3
    卡控制器错误
    2
    未知错误
    1
    写保护擦除跳过,锁/解锁失败
    0
    锁卡

     

    字节
    含义
     
     
     
    1
    7
    开始位,始终为0
    6
    参数错误
    5
    地址错误
    4
    擦除序列错误
    3
    CRC错误
    2
    非法命令
    1
    擦除复位
    0
    闲置状态
    2~5
    全部
    操作条件寄存器,高位在前


    写命令的例程:
    //-----------------------------------------------------------------------------------------------
      向SD卡中写入命令,并返回回应的第二个字节
    //-----------------------------------------------------------------------------------------------
    unsigned char Write_Command_SD(unsigned char *CMD)
    {
       unsigned char tmp;
       unsigned char retry=0;
       unsigned char i;

       //禁止SD卡片选
       SPI_CS=1;
       //发送8个时钟信号
       Write_Byte_SD(0xFF);
       //使能SD卡片选
       SPI_CS=0;

       //向SD卡发送6字节命令
       for (i=0;i<0x06;i++)
       {
          Write_Byte_SD(*CMD++);
       }
      
       //获得16位的回应
       Read_Byte_SD(); //read the first byte,ignore it.
       do
       {  //读取后8位
          tmp = Read_Byte_SD();
          retry++;
       }
       while((tmp==0xff)&&(retry<100));
       return(tmp);
    }

    2) 初始化
    SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。在初始化成功后,应尽量提高SPI的速率。在刚开始要先发送至少74个时钟信号,这是必须的。在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功。随后就是写入两个命令CMD0与CMD1,使SD卡进入SPI模式
               初始化时序图:

       初始化例程:
    //--------------------------------------------------------------------------
        初始化SD卡到SPI模式
    //--------------------------------------------------------------------------
    unsigned char SD_Init()

       unsigned char retry,temp;
       unsigned char i;
       unsigned char CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};
    SD_Port_Init(); //初始化驱动端口
      
       Init_Flag=1; //将初始化标志置1

     

       for (i=0;i<0x0f;i++)
       {
          Write_Byte_SD(0xff); //发送至少74个时钟信号
       }
     
       //向SD卡发送CMD0
       retry=0;
       do
       { //为了能够成功写入CMD0,在这里写200次
         temp=Write_Command_SD(CMD);
         retry++;
         if(retry==200)
         { //超过200次
           return(INIT_CMD0_ERROR);//CMD0 Error!
         }
       }
       while(temp!=1);  //回应01h,停止写入
      
       //发送CMD1到SD卡
       CMD[0] = 0x41; //CMD1
       CMD[5] = 0xFF;
       retry=0;
       do
       { //为了能成功写入CMD1,写100次
         temp=Write_Command_SD(CMD);
         retry++;
         if(retry==100)
         { //超过100次
           return(INIT_CMD1_ERROR);//CMD1 Error!
         }
       }
       while(temp!=0);//回应00h停止写入
      
       Init_Flag=0; //初始化完毕,初始化标志清零
      
       SPI_CS=1;  //片选无效
       return(0); //初始化成功
    }
    3) 读取CID
    CID寄存器存储了SD卡的标识码。每一个卡都有唯一的标识码。
    CID寄存器长度为128位。它的寄存器结构如下:
     

     

    名称
    数据宽度
    CID划分
    生产标识号
    MID
    8
    [127:120]
    OEM/应用标识
    OID
    16
    [119:104]
    产品名称
    PNM
    40
    [103:64]
    产品版本
    PRV
    8
    [63:56]
    产品序列号
    PSN
    32
    [55:24]
    保留
    4
    [23:20]
    生产日期
    MDT
    12
    [19:8]
    CRC7校验合
    CRC
    7
    [7:1]
    未使用,始终为1
    1
    [0:0]

     

    它的读取时序如下:

    与此时序相对应的程序如下:
    //------------------------------------------------------------------------------------
        读取SD卡的CID寄存器   16字节   成功返回0
    //-------------------------------------------------------------------------------------
    unsigned char Read_CID_SD(unsigned char *Buffer)
    {
       //读取CID寄存器的命令
       unsigned char CMD[] = {0x4A,0x00,0x00,0x00,0x00,0xFF};
       unsigned char temp;
       temp=SD_Read_Block(CMD,Buffer,16); //read 16 bytes
       return(temp);
    }

    4)读取CSD
    CSD(Card-Specific Data)寄存器提供了读写SD卡的一些信息。其中的一些单元可以由用户重新编程。具体的CSD结构如下:

     

    名称
    数据宽度
    单元类型
    CSD划分
    CSD结构
    CSD_STRUCTURE
    2
    R
    [127:126]
    保留
    -
    6
    R
    [125:120]
    数据读取时间1
    TAAC
    8
    R
    [119:112]
    数据在CLK周期内读取时间2(NSAC*100)
    NSAC
    8
    R
    [111:104]
    最大数据传输率
    TRAN_SPEED
    8
    R
    [103:96]
    卡命令集合
    CCC
    12
    R
    [95:84]
    最大读取数据块长
    READ_BL_LEN
    4
    R
    [83:80]
    允许读的部分块
    READ_BL_PARTIAL
    1
    R
    [79:79]
    非线写块
    WRITE_BLK_MISALIGN
    1
    R
    [78:78]
    非线读块
    READ_BLK_MISALIGN
    1
    R
    [77:77]
    DSR条件
    DSR_IMP
    1
    R
    [76:76]
    保留
    -
    2
    R
    [75:74]
    设备容量
    C_SIZE
    12
    R
    [73:62]
    最大读取电流@VDD min
    VDD_R_CURR_MIN
    3
    R
    [61:59]
    最大读取电流@VDD max
    VDD_R_CURR_MAX
    3
    R
    [58:56]
    最大写电流@VDD min
    VDD_W_CURR_MIN
    3
    R
    [55:53]
    最大写电流@VDD max
    VDD_W_CURR_MAX
    3
    R
    [52:50]
    设备容量乘子
    C_SIZE_MULT
    3
    R
    [49:47]
    擦除单块使能
    ERASE_BLK_EN
    1
    R
    [46:46]
    擦除扇区大小
    SECTOR_SIZE
    7
    R
    [45:39]
    写保护群大小
    WP_GRP_SIZE
    7
    R
    [38:32]
    写保护群使能
    WP_GRP_ENABLE
    1
    R
    [31:31]
    保留
    -
    2
    R
    [30:29]
    写速度因子
    R2W_FACTOR
    3
    R
    [28:26]
    最大写数据块长度
    WRITE_BL_LEN
    4
    R
    [25:22]
    允许写的部分部
    WRITE_BL_PARTIAL
    1
    R
    [21:21]
    保留
    -
    5
    R
    [20:16]
    文件系统群
    FILE_OFRMAT_GRP
    1
    R/W
    [15:15]
    拷贝标志
    COPY
    1
    R/W
    [14:14]
    永久写保护
    PERM_WRITE_PROTECT
    1
    R/W
    [13:13]
    暂时写保护
    TMP_WRITE_PROTECT
    1
    R/W
    [12:12]
    文件系统
    FIL_FORMAT
    2
    R/W
    [11:10]
    保留
    -
    2
    R/W
    [9:8]
    CRC
    CRC
    7
    R/W
    [7:1]
    未用,始终为1
    -
    1
     
    [0:0]

     

    读取CSD 的时序:

    相应的程序例程如下:
    //-----------------------------------------------------------------------------------------
        读SD卡的CSD寄存器   共16字节    返回0说明读取成功
    //-----------------------------------------------------------------------------------------
    unsigned char Read_CSD_SD(unsigned char *Buffer)

       //读取CSD寄存器的命令
       unsigned char CMD[] = {0x49,0x00,0x00,0x00,0x00,0xFF};
       unsigned char temp;
       temp=SD_Read_Block(CMD,Buffer,16); //read 16 bytes
       return(temp);
    }


    4) 读取SD卡信息
    综合上面对CID与CSD寄存器的读取,可以知道很多关于SD卡的信息,以下程序可以获取这些信息。如下:
    //-----------------------------------------------------------------------------------------------
    //返回
    //  SD卡的容量,单位为M
    //  sector count and multiplier MB are in
    u08 == C_SIZE / (2^(9-C_SIZE_MULT))
    //  SD卡的名称
    //-----------------------------------------------------------------------------------------------
    void SD_get_volume_info()
    {  
        unsigned char i;
        unsigned char c_temp[5];
        VOLUME_INFO_TYPE SD_volume_Info,*vinf;
        vinf=&SD_volume_Info; //Init the pointoer;
    /读取CSD寄存器
        Read_CSD_SD(sectorBuffer.dat);
    //获取总扇区数
     vinf->sector_count = sectorBuffer.dat[6] & 0x03;
     vinf->sector_count <<= 8;
     vinf->sector_count += sectorBuffer.dat[7];
     vinf->sector_count <<= 2;
     vinf->sector_count += (sectorBuffer.dat[8] & 0xc0) >> 6;
     // 获取multiplier
     vinf->sector_multiply = sectorBuffer.dat[9] & 0x03;
     vinf->sector_multiply <<= 1;
     vinf->sector_multiply += (sectorBuffer.dat[10] & 0x80) >> 7;
    //获取SD卡的容量
     vinf->size_MB = vinf->sector_count >> (9-vinf->sector_multiply);
     // get the name of the card
     Read_CID_SD(sectorBuffer.dat);
     vinf->name[0] = sectorBuffer.dat[3];
     vinf->name[1] = sectorBuffer.dat[4];
     vinf->name[2] = sectorBuffer.dat[5];
     vinf->name[3] = sectorBuffer.dat[6];
     vinf->name[4] = sectorBuffer.dat[7];
     vinf->name[5] = 0x00; //end flag 
    }
             以上程序将信息装载到一个结构体中,这个结构体的定义如下:
    typedef struct SD_VOLUME_INFO
    { //SD/SD Card info
      unsigned int  size_MB;
      unsigned char sector_multiply;
      unsigned int  sector_count;
      unsigned char name[6];
    } VOLUME_INFO_TYPE;

    展开全文
  • 基于MSP430的MP3 源码+电路图+PCB+字库+SD
  • 本设计是基于ALLWINNER A10 CORTEX-A8的开源硬件嵌入式ARM LINUX单板计算机。 特性: Allwinner A10 Cortex-A8处理器通常以1GHz和Mali 400 GPU运行 512MB DDR3 RAM内存 SATA连接器,带5V SATA...附件电路图及PCB截图:
  • 对平板电脑电路原理和维修进行了系统的讲解,对涉及电路的软件部分也作了简要介绍,内容主要包括平板电脑的电源电路、CPU电路、NAND闪存电路、DDR内存电路、LCD显示模组电路、触摸屏电路、音频电路、摄像头模组电路...

    导语

    b90ee82885d6ae6c68e81579c37a5cbd.png

    内容提要

    b90ee82885d6ae6c68e81579c37a5cbd.png

    师彦祥编著的《图解Windows10平板电脑电路原理和维修》由从事电子技术工作多年的资深工程师执笔,对平板电脑电路原理和维修进行了系统的讲解,对涉及电路的软件部分也作了简要介绍,内容主要包括平板电脑的电源电路、CPU电路、NAND闪存电路、DDR内存电路、LCD显示模组电路、触摸屏电路、音频电路、摄像头模组电路、无线模块电路、传感器电路、平板电脑的各种接口电路,以及平板电脑的刷机知识,同时重点对Windows 10二合一平板电脑电路原理和维修进行了讲解。

    本书适合学习平板电脑维修的技术人员,也可用作中职培训教材,还可用作学习Windows 10系列笔记本电脑、智能手机、GPS导航仪等平板设备维修的参考资料,对平板电脑的设计开发人员也有一定的参考价值。

    目录

    第1章 平板电脑概述

    1.1  平板电脑的功能

    1.2  平板电脑的操作系统

    1.2.1  苹果iOS操作系统

    1.2.2  谷歌Android操作系统

    1.2.3  微软Windows 10操作系统

    1.3  平板电脑中的关键硬件:CPU和显示器

    第2章 平板电脑的电路基础

    2.1  电阻

    2.2  电容

    2.3  电感

    2.4  二极管

    2.5  三极管

    2.6  集成电路

    第3章 平板电脑的电源电路

    3.1  电源IC

    3.1.1  三引脚电源IC

    3.1.2  四引脚电源IC

    3.1.3  五引脚电源IC

    3.1.4  六引脚电源IC

    3.1.5  八引脚电源IC

    3.2  其他功能IC

    3.2.1  三引脚非电源IC的接法

    3.2.2  四引脚非电源IC的接法

    3.2.3  五引脚非电源IC的接法

    3.2.4  六引脚非电源IC的接法

    3.3  平板电脑电源电路概述

    3.3.1  开机电路简介

    3.3.2  平板电脑的启动过程

    3.3.3  常见的8种开机电路

    3.4  电源管理单元PMU / PMIC

    3.4.1  电源管理单元的作用

    3.4.2  电源管理单元的工作原理

    3.4.3  电源管理单元的上电时序

    3.4.4  电源管理单元异常事件的种类

    3.5  电源中的充电电路

    3.6  电源电路的维修

    第4章 平板电脑的CPU电路

    4.1  CPU的内部结构

    4.2  CPU挂接/连接的外部模块

    4.3  CPU引脚信号的说明

    4.4  CPU的工作过程

    4.5  CPU电路的检修

    第5章 平板电脑的存储电路

    5.1  内存DDR电路

    5.1.1  DDR内存控制器

    5.1.2  DDR内存的内部结构

    5.1.3  DDR电路连接图

    5.1.4  DDR芯片各引脚符号说明及引脚作用

    5.1.5  DDR电路的工作原理

    5.1.6  内存DDR电路的检修

    5.2  闪存NAND电路

    5.2.1  闪存控制器

    5.2.2  闪存内部电路结构

    5.2.3  闪存电路连接图及引脚符号定义

    5.2.4  闪存电路的工作原理

    5.2.5  闪存NAND电路检修

    5.3  串行闪存电路

    5.4  SSD固态硬盘电路

    第6章 平板电脑的不开机维修

    6.1  平板电脑的开机流程

    6.2  不开机检修

    6.3  不开机检修流程

    6.4  死机、自动关机、反复重启的检修

    6.4.1  死机的检修

    6.4.2  自动关机和反复重启的检修

    第7章 平板电脑的LCD显示器模组

    7.1  LCD显示器模组工作原理

    7.2  LCD模组接口种类及引脚符号定义

    7.3  液晶模组常用的接口种类

    7.3.1  TTL接口

    7.3.2  LVDS接口

    7.3.3  EDP接口

    7.4  花屏、白屏及暗屏故障的检修

    7.4.1  花屏故障的检修

    7.4.2  白屏故障的检修

    7.4.3  暗屏故障的检修

    第8章 平板电脑的触摸屏电路

    8.1  电阻触摸屏电路的电路原理

    8.2  电容触摸屏电路的工作原理

    8.3  电磁触摸屏电路的工作原理及检修

    8.3.1  电磁触摸屏的组成部分及作用

    8.3.2  电磁触摸屏电路的工作原理

    8.3.3  电磁触摸屏的维修

    8.4  触摸屏电路的检修

    第9章 平板电脑的音频编/解码电路

    9.1  音频编/解码电路基础

    9.2  音频编/解码电路的工作过程

    9.3  音频编/解码电路原理

    9.4  音频编/解码电路的检修

    第10章 平板电脑的摄像头模组

    10.1  摄像头模组的工作原理

    10.2  摄像头模组的电路原理

    10.2.1  30万像素摄像头OV7725图像传感器的电路原理

    10.2.2  500万像素摄像头MT9P系列图像传感器的电路原理

    10.2.3  1300万像素摄像头OV12830的电路原理

    10.3  常见摄像头接口种类及引脚符号定义说明

    10.4  摄像头模组的检修

    第11章 平板电脑的无线模块电路

    11.1  WiFi模块电路

    11.1.1  WiFi模块的工作原理

    11.1.2  WiFi芯片内部的工作过程

    11.1.3  WiFi实际电路的工作原理

    11.2  GPS模块电路

    11.2.1  GPS的基本工作过程

    11.2.2  GPS实际电路工作原理

    11.2.3  GPS模组接口引脚符号定义说明

    11.3  BT蓝牙模块电路

    11.4  无线模块的维修

    第12章 平板电脑的接口电路

    12.1  HDMI高清显示器接口

    12.2  USB 及OTG电路

    12.3  TF卡、SD卡和SIM卡接口电路

    12.3.1  闪存卡介绍

    12.3.2  TF卡、SD卡和SIM卡的区别

    12.3.3  闪存卡的内部结构

    12.3.4  闪存卡的工作原理及引脚定义

    12.3.5  TF卡和SD卡的电路连接

    12.3.6  闪存卡的维修

    12.3.7  SIM卡接口电路

    12.3.8  SIM卡的工作原理

    12.3.9  SIM卡电路及维修

    12.4  网卡接口电路

    12.4.1  电脑之间的网络通信原理

    12.4.2  网卡电路结构

    第13章 平板电脑的传感器模块

    13.1  陀螺仪模块电路

    13.1.1  陀螺仪的原理

    13.1.2  陀螺仪电路的工作原理

    13.2  重力加速度计模块电路

    13.2.1  重力加速度计概述

    13.2.2  重力加速度计电路的工作原理

    13.2.3  不同型号的重力加速度计的引脚符号及定义说明

    13.3  电子罗盘/指南针模块电路

    13.3.1  电子罗盘/指南针(Compass)概述

    13.3.2  电子罗盘/指南针电路的工作原理

    13.4  环境光/亮度/接近传感器模块电路

    13.4.1  接近传感器电路

    13.4.2  亮度传感器电路

    13.4.3  环境光传感器电路

    13.4.4  震动电动机Vibrator

    13.5  传感器模块的检修

    第14章 平板电脑的刷机

    14.1  什么是刷机?为什么要刷机?

    14.2  刷机的基础知识

    14.3  如何刷机

    14.4  刷机固件的简单修改

    14.5  刷机注意事项

    14.6  刷机过程中经常遇到的问题

    第15章 Windows 10二合一平板电脑电路分析

    15.1  Windows 10二合一平板电脑硬件组成

    15.2  Windows 10二合一平板电脑架构组成

    15.3  Windows 10平板电脑的电源电路

    15.3.1  Windows 10平板电脑电源电路原理

    15.3.2  电源电路控制信号的产生过程

    15.3.3  充电电源和充电电压及主供电电压

    15.3.4  待机电源和待机电压

    15.3.5  开机电源和开机电压

    15.3.6  休眠电源和休眠电压

    15.3.7  CPU内核电源和CPU内核电压

    15.3.8  显卡电源和显卡电压

    15.3.9  整机供电电路分析

    15.4  Windows 10平板电脑中的EC电路和上电时序分析

    15.4.1  Windows 10平板电脑中的EC电路

    15.4.2  英特尔6、7、8、9系列芯片组上电时序及信号解释

    15.5  Windows 10平板电脑CPU电路

    15.5.1  CPU供电电路

    15.5.2  CPU时钟电路

    15.5.3  CPU复位电路

    15.5.4  CPU中断电路

    15.5.5  CPU外接总线的简单工作原理

    15.5.6  CPU的内存总线和DDR64位内存电路的连接

    15.5.7  CPU的SATA、M.2、U.2和MINI_PCIE总线和固态硬盘电路的连接

    15.5.8  CPU的LPC总线和EC(超级IO)及TPM电路的连接

    15.5.9  CPU的SPI总线和BIOS电路连接及UEFI接口说明

    15.5.10  CPU的EDP总线和显示器的连接

    15.5.11  CPU的HDA和音频电路的连接

    15.5.12  CPU的I2C总线和传感器的连接电路

    15.5.13  CPU的PCIE总线和独立显卡的连接电路

    15.6  传感器集中处理器(Sensor Hub)

    展开全文
  • A13-SOM-512是片上系统模块,带有A13 Cortex-A8 ARM处理器,电源管理单元,512MB DDR3内存。所有免费A13信号均可在4个连接器上使用,步长为0.05“.A13-SOM-512具有UART控制台和microSD连接器。 A13-SOM-512可以...
  • 文档是本科时候的一个课程设计,里面详细介绍了EM4100 ID的读写原理以及电路设计,文末附了PCB图以及原理电路图,并且有示波器波形仿真分析。
  • 这是模拟电路部分的电路图。 2.4、主控电路部分 主控电路板包括一个微处理器(MCU),一个可编程逻辑器件(PLD)和电源部分。微处理器的芯片是一个NXP的LPC2368,它集成了一个在72MHZ下工作的ARM7TDMI核心,512K字节...

    数码相机都白菜价了?现在白菜都快赶上房价了!所以,立志要成为德艺双馨摄影大师的,无论普通、文艺还是二逼的青年摄影师们,我们还是自己动手吧!

    DIYer:ChaN

    制作时间:半个月

    制作难度:★★★★☆

    GEEK指数:★★★★★

    第1页:线性扫描相机 第2页:硬件构成 第3页:软件构成

    第4页:使用说明 第5页:实拍效果展示

    数码线性扫描相机是数码相机的一种。这种相机一般在各种机器中作为组成部分发挥作用,一般来说不容易在实际生活中独立见到。这个制作能帮助你DIY并且进一步了解线性扫描相机。

    线性CCD传感器(Charge-coupled Device line sensor,线性电荷耦合传感器)是线性扫描相机中最为重要的部分。我十多年前就在电子城中买下了它。但是想要制作一台小体积的便携线性扫描相机有些困难,电路部分需要高性能的微处理器和大容量存储器,在当时一般的个人制作对这些昂贵的高级货只能敬而远之。于是它被我扔到一个破烂盒子里,连我自己都几乎忘记了。

    十年的时间之后,拜飞速发展的半导体工业所赐,芯片们的价格终于降到了可以接受的地步。现在即使是入门的新手也能随意享受到32位的微处理器和海量的存储卡,所以我依靠最新的技术重新开始了这个项目!

    1、线性扫描相机

    1.1、相机原理

    普通平面相机和线性相机的比较

    线性扫描相机是数码相机的一种,它使用线性CCD传感器(一维CCD器件)作为图像传感器。普通的数码相机用一个平面CCD器件(二维CCD器件)捕捉焦平面上的图像,获取的图案是一个二维的平面。而对线性扫描相机来说,它所获取的图案是一条一维的线!

    即使每次获得的图像只有一条线,线性扫描相机还是有能力获得完整的图像。在制作一台线性扫描相机时,需要不断移动相机或者被摄物这样每次获得的部分数据被存储在内存里,并最终像织布一样一条线一条线地拼凑成完整的图像。

    在过去的胶片时代有一种狭缝相机。它和这里说的线性扫描相机类似,通过一条窄缝(一维的窗口)成像,拼合一维图像获取完整的二维图像。

    1.2、功能应用

    线性扫描相机具有下面这些功能:

    - 高分辨率。即使便宜的传感器也能做到10000点以上的分辨率。

    - 简单紧凑的光学系统。不需要扫描桌。

    - 对物体的尺寸和长度没有限制,对很长的物体也能正确成像。

    由于这些功能,线性扫描相机在很多地方得到了广泛应用,你可以在许多重要的设备上发现它们。比如:

    - 复印机

    - 图像扫描仪

    - 传真机

    - 机器视觉(检查长形物体)

    - 卫星(比如拍下google地图的那些)

    - 终点摄影(体育比赛)

    2、硬件构成

    2.1、功能模块

    上图展示了构成线性扫描相机的各个功能模块。线性CCD传感器将收集的光感信息传递到AD(模拟-数字)转换器数字化,然后以数字信号形式输入控制器。这些数据可以显示在显示屏上,或者传输到存储器里。扫描的频率在500线每秒到2000线每秒之间可调,视CCD器件的种类而定。

    电路部分被分成三大部分,每块之间通过柔性印刷电路排线相连。我经常不使用定制的PCB因为它们太贵而且没有DIY精神,设计麻烦,之后有改动也麻烦。这种一次性的制作在洞洞板上相机行事最好了。

    这是何等的飞线功力……

    2.2、光路和外壳

    上图展示了如何为这个线性扫描相机制作外壳。这是从一个高知电子(Takachi electric industrial)的SW-85B塑料盒改造而来的外壳,这个项目的光路需要控制的非常精确,所以设计,加工,装配的时候都需要特别注意。这里有 外壳的图纸 。带有线性传感器的模拟部分电路板安装在可动的螺钉上,这样就能随意调整距离。

    这次使用的透镜是C-mount接环的,它是工业摄像头中使用的标准镜头之一,但是不那么好弄到。我用了一个C-CS的转接环来将镜头装到壳体上。一个UNC(英制统一螺纹粗牙系列)螺母粘在盒子的底面上用来固定摄像头。盒内涂了一层导电涂料做电磁屏蔽。

    2.3、模拟电路部分

    上图是这个制作中的模拟电路部分,它包含线性扫描相机中最为重要的器件。上面安装了一个CCD线性传感器和模拟电路。CCD线性传感器是一枚东芝的TCD132D单色CCD,它对红外光也敏感,所以为了获得与人眼感觉相近的图像需要一个红外滤镜(IRCF)。CCD线性传感器需要一个来自主控电路板的时钟信号驱动。传感器的模拟图像信号输出先经过一个可变增益放大器(AD8830),再由一个模数转换器(ADC1173)转化为数字信号。ADC1173的8位数字信号输出送入主控电路板。像素采集率从0.5MHZ到2MHZ可变,但是模数转换器必须在工作在至少两倍采样率的时钟频率下。每两次采样之后,向主控电路板输出一次数字信号。

    这是模拟电路部分的电路图。

    2.4、主控电路部分

    主控电路板包括一个微处理器(MCU),一个可编程逻辑器件(PLD)和电源部分。微处理器的芯片是一个NXP的LPC2368,它集成了一个在72MHZ下工作的ARM7TDMI核心,512K字节内存,32K+16K+8K字节的SRAM,还有给力的外围设备。它可以通过一个集成的SD卡控制器在4位原生模式下控制外置的MicroSD存储卡。LPC系列的ARM微处理器广泛用在现在的电子制作中,因为它的市场政策很对路,物美价廉。

    一个可编程逻辑器件(LC4256V)被用来驱动CCD线性传感器。PLD里配置了一个用来给传感器提供时钟的时钟产生器和一个先入先出队列。电源供应部分提供了数字电源(3.3V)。和模拟部分的电源(12V)。

    这是主控电路部分的电路图。

    2.5、显示电路部分

    显示部分电路安装在盒子的背面,它提供了相机的操作界面。上面的器件包括一个OLED显示屏,开关。五向键和一个MicroSD插槽。打开盒盖就能安装或者移除SD卡。

    这是显示电路部分的电路图。

    2.6、组合效果

    内视图

    底视图

    镜头接口视图

    3、软件构成

    3.1、数据处理

    AD转换器的像素采集率可以高达2.1M像素每秒。首先,图像数据被存储在微处理器的缓冲存储器里。因为每秒2.1M的数据量对软件来说实在太过分,图像数据会存储到PLD的先进先出队列里。队列半满时触发微处理器的DRDT中断,然后微处理器一次接受一半队列的数据。队列的大小是16字节,也就是说软件的操作周期只要有像素采集率的1/8就足够。这对触发中断来说不算太快,但是仍然需要微处理器高速运行。这个项目里用了ARM7TDMI核心的快速中断请求功能(FIQ,fast interrpt request,通过编组寄存器产生低延迟中断),可惜在Cortex-M3核心中这一功能被去掉了。

    当微处理器响应FIQ请求时,一些寄存器切换到FIQ的编组寄存器状态,然后FIQ例程可以直接进入/离开而省去了切换过程。为了最大化执行效率,一般来说FIQ例程是用汇编语言写的。在启用这一功能的 数据波形图 里,可以观察到8位的数据在不用存储的时候只需要0.8微秒处理,加上DMA模式下从总线写入SD卡也只用了2微秒,这样的延迟可以接受。

    在每一行数据中有1094个像素,但其中有效的只有1024个。这些数据被存入内存,中断信号SYNC#在每一行数据的开始输出,用来同步第一个像素的数据。

    3.2、重建图像

    捕捉到的数据可以用通用的8位灰度BMP位图格式存储在MicroSD卡里,宽1024像素,长视拍摄时间而定。存储的格式是DCIMLCAMYnnnn.BMP(nnnn 是编号),和普通的数码相机几乎一样。

    在使用廉价的微处理器将图像数据存入SD卡时会遇到一些困难,主要是输入的数据要在极短的时间内存进文件。这个制作中的最大数据传输率是2MB每秒。幸运的是LPC2368有一个MCI(SD/MMC卡的原生控制模式),它能提供8MB/s的数据读取和6MB/s的数据写入能力。但是这是指读写大文件时的平均速度,事实上每次读写之间都需要一些死时间用在SD卡的内部处理和文件系统上,为了避免这些浪费,一个数据缓冲器被用来在死时间中暂存数据,但是微处理器系统的内存大小是有限的,不一定有足够的空间进行缓冲。

    让我们估计一下每次写数据操作所能容许的时间耗费。在这个制作里,所有32K的SRAM都用来做数据缓冲器,而程序在16K的ethernet RAM上运行。数据缓冲器分成两半,其中一块填充数据的时候另一块将数据写入闪存。这要求在每8毫秒里写入16KB的数据,每次操作必须在下次操作之前完成 。接下来的软件技巧可以解决这个问题。

    数据写入过程中最重要的延迟发生在集群分配时,在实时操作系统里这是个很大的问题,集群分配导致的死时间视情况不同可能高达数秒钟。这个制作里使用集群预分配(写入数据时用f-lseek函数申请一个比目前需要大很多的空间)来避免写入数据时进入分区表重新定位。每次写入操作都包含一个用来结束操作的集群边界条件。想象一下SD卡里的文件预先整理出一块整齐的空间给数据,这就避免了写入数据过程中大量导致延迟的未知问题。

    尽管有这些用来尽可能减小死时间的方法,SD卡或多或少还有一些内部处理时间。在挑选SD卡的时候需要挑写入速度尽可能快的SD卡。我在许多牌子之间做过比较,结果发现东芝产SD卡有最小的写入延迟,也有最稳定的表现。

    3.3、显示图像

    由于获得的图像数据都是一维的线条,它不能像传统平面成像的二维图像一样显示。

    为了这个问题需要一些特别的显示模式。

    其中一种是范围视图,输入的图像信号连接到Y轴,就像像示波器的输入。Y轴信号表示亮度,X轴信号表示各点在线性传感器上的位置。这个模式适于用来观察感光度和聚焦情况。不同点之间数据的差距可以用来帮助对焦,当图像聚焦时,波形图上产生许多峰谷,出现最大的峰峰值表明焦距已经对上。这是现在数码相机里自动对焦功能的原型。

    另外一种是卷动视图,图像向上卷动,新扫描到的图像出现在屏幕底部。这个模式能够用来调整线分辨率。最后生成的二维图像的高宽比决定于线分辨率和物体移动的速度。

    卷动视图能够展现出捕捉到的2D景象,但是如果被摄物体不移动就只剩下水平的线了,所以相机或者物体之一一定要在给定的运动速度下拍摄,这样才能一边观察一边调节线分辨率。

    4、使用说明

    线性扫描相机的一般用途同胶片时代的狭缝相机类似。狭缝相机很容易在性能上击败线性扫描相机,它的感光颗粒直径14um,远远小于CCD中单元的直径,意味着极好的分辨率。但是玩狭缝相机意味着你要足够的取景,对焦,拍摄和冲印能力,非老鸟不能为。

    相机位置

    这个相机需要被固定在合适的角度,这样物体所成的像可以扫过线性传感器。比如说,但物体横向移动或者横方向特别长的话,相机最好固定在线性传感器处于垂直的位置。这个角度必须精确,否则拍出的图片会出现类似平行四边形的扭曲。

    调节焦距

    这个线性扫描相机由一个5向摇杆控制(上下左右和中键),向右按可以切换显示模式(范围模式或者卷动模式)。首先,输入信号的电平可以通过光圈或者增益控制(上下点击)。增益控制也可以通过左键自动调整。接下来,通过对焦环调节焦距直到信号的峰峰值最大。

    调整传感器线分辨率

    在卷动模式下可以调节相机匹配传感器线分辨率。调节直到屏幕上显示的是正确的高宽比。传感器线分辨率也可以通过物体移动的速度,物体离镜头的距离和焦距来计算,这略微有些误差,但数字图片是可以通过后期处理来修正的。当然如果传感器线分辨率实在太低的话,这个过程会损失一些信息。通常来说传感器线分辨率高不是坏事,就是灵敏度可能低些。传感器线分辨率影响曝光时间(灵敏度),所以输入电平的增益需要和不同的线分辨率匹配。

    获得图像

    中间的按钮用来开始/停止拍摄。按下按钮就可以开始记录图像。集群预分配会在0.5秒内完成,然后暂停直到松开。松开按钮时会开始记图像录,然后在任意按钮按下时停止或者直到写入数据到达了集群预分配区域的边界。预分配的大小被配置到10万行(大约100MB),但是可以根据拍摄物的尺寸改变。生成的图像文件可以在电脑上进行预处理,调节图片朝向,高宽比或者做伽玛校正。

    一列火车横向运动拍摄。此图为拼图效果。

    展开全文
  • AAFPCB音频电路板 AB 地址总线 ab 地址总线 accessorier 配件 ACCESSORRIER 配件 ADC(A/O) 模拟到数字的转换 adc 模拟到数字的转换 ADDRESS BUS地址总线 AFC 自动频率控制 afc ...
  • CPU的那些事(带CPU电路图

    万次阅读 2012-11-15 13:00:44
    CPU电路图 http://pan.baidu.com/share/link?shareid=26813&uk=503419128 相关话题 出PC2500主板+1G内存,凤凰205照相机 拆解“给乐”鼠标,细节决定成败! ...
  • 高速传输反射内存卡

    2019-08-14 16:44:01
    实时反射内存网络是一种为使多个独立的计算机进行数据共享而特别设计的共享内存系统。实时反射内存网络在系统中的每个节点放置一个共享内存的独立的拷贝。每个节点都有写入数据访问和读取本地内存的权限。当数据写入...
  • 1 引言  对实时传输, 传统的以太网络由于传输协议开销的不确定性, 很难满足实时... 反射内存卡系统的总体框图如1 所示, 主要由5部分组成:FPGA、PCI 接口、SDRAM、数据编解码电路、光纤收发电路。  其中,F
  • 手机电路原理学习

    千次阅读 2016-04-15 08:28:13
    电路图中CPU: RF&HSL:射频 PHY:物理层 PWR&DDRIO:电源 GPIO:generalpurpose IO ports,通用IO接口。 在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的...
  • SD读卡器原理

    2012-12-10 14:26:26
    SD读卡器原理---AU6331方案单合
  • SD与SD卡座电路

    万次阅读 2016-12-01 13:02:34
    这6条信号线都是共用总线,即新加入的设备可以并联接入SDIO,达到挂接多个SD的目的。SDIO主机是通过命令和SD从设备的响应来寻址的,所以不需要片选信号线。  CLK是的时钟信号线,由主机产生
  • 电路实验

    2017-11-20 14:38:42
    一.简单NOR电路建立 真值表 INPUT OUTPUT ON(1) BLACK(0) OFF(0) RED(1) ... 电路图:(由于太所以没放在一起) A(B+C) AB+AC 真值表 A B C U1 U2 0 0 0 0 0 1 0
  • 该资源包括SD卡电路原理及C代码。可对SD卡进行读写操作。希望对学习SD卡的朋友有所帮助。
  • 学前班-怎么看原理之GPIO与门电路

    千次阅读 2016-11-18 09:24:58
    对硬件电路图分为三类: 1,GPIO与门电路(管脚类与门电路类) 1.1 输入、输出引脚、上拉电阻、三极管 输出引脚示例图: 1.2 与门、或门、非门 2,协议类 2.1 URAT 2.2 I2C 2.3 SPI  2.4 NAND 2.5 LCD 3,类似...
  • 我们这里所说的相机,准确来说应该称之为数据存储。不过依然有不少的人会将之称呼为相机,可能是因为这些存储大多数都用于数码相机的图片存储上。实际上在某些数码相机上通常都会默认内置1-2G的空间用于存储...
  • RC522读M1原理及调试

    万次阅读 热门讨论 2017-08-30 13:49:22
    原理及代码网上有蛮多,用的如下: 天线线宽15mil,线圈做了4圈,尺寸30mmx50mm,如下, 做好后,发现读卡距离20mm左右,差些的卡能到10mm去了,距离太近。最后的调整方案是将红框中的电容值由180pF...
  • 图形加速技术

    千次阅读 2013-08-21 22:25:06
    你现在打开 Windows 的“画笔”程序,随便画几个圆,几条线,几块色,然后把你得放大 8 倍(这个不用我指导你做吧?!) 你看到了什么?是不是由一个一个的小方块组成了你的图形?每一个小方块,被称作一个 像素 ...
  • E680 内存卡不识别问题新解2009.10.15

    千次阅读 2009-10-16 21:21:00
    我买的是二手的小I,开始用着很好,不过就是对一些内存卡不识别,开始换一个就好了,但是压到手机后,内存卡有时会不识别,不得不格式化,但是最近开机时可以识别出已经插卡,但是系统启动完成后,SD卡标识消失,也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,941
精华内容 7,176
关键字:

内存卡电路图