
ABB AO820 3BSE008546R1
ABBAO8203BSE008546R13.1选择SD卡的SPI模式并初始化SD卡在上电之后,主机开始发送时钟信号,此时的时钟频率不能超过400kHz。主机要连续发送至少74个时钟周期的“1”才能使SD卡准备好通信,然后选择SPI模式。SD卡进入SPI模式之后,就可以接收来自主机的操作指令了。这时候主机发送SEND_OP_COND指令,激活卡的初始化过程。在得到正确的响应之后,主机再发送SEND_CSD指令读取CSD寄存器的内容。正确响应之后,将SPI总线时钟频率提高到10MHz,初始化过程结束。3.2指令和响应交互过程的软件实现指令和响应交互过程的软件实现点击看原图typSD_CMD是自定义的结构类型,包含指令索引、CRC和响应格式。最后一个字节数据用来说明该指令有无后续数据块,例如READ_SINGLE_BLOCK(单数据块读指令),它需要SD卡发送一个数据块的数据,因此其后的数据为“1”。对于指令索引,是把开始位和传输位与6位索引值包含在一起的数据。例如G0_IDLE_STATE的索引值是二进制“000000”,加上开始位“O”和传输位“1”,成为“01000000”,即“Ox40”,READ_SINGLE_BLOCK的索引值是“010001”,加上开始位和传输位,成为“01010001”即"051”。定义发送指令函数为SendSDCmd(),返回值为从总线上读取的响应数据。(具体函数略——编者注)函数的第一个参数是指令列表数组中相应指令元素的序号,函数会根据它的值在指令表中查到对应的信息,第二个参数是指令的附加内容。函数中CMD_PACKET是按指令格式(见表2)定义的联合类型,程序通过查表的方式将指令的内容装载到该类型定义的变量中,并通过函数Write_sd()发送出去。write_sd()的作用是把一个字节的数据放到SPI2模块的burfer里,完成一个字节的发送。函数ReadSd()用来读取SPI2接收的一个字节数据。如果接收的数据是0ff,则不是响应数据;如果接收到的响应不为全零,则说明有错误发生。以上程序按照图2所示时序执行,来实现一次指令和响应数据的交互。当某条指令有后续数据时,按照规范中的时序发送或者读取数据。3.3读写操作的实现READ_SINGLE_BLOCK是单数据块读指令,在接收到有效的读指令后SD卡将会送出一个响应。紧接着是一个带16位CRC校验后缀的数据块,数据块的长度要在之前由SET_BLOCKEN(CMDl6)指令定义,一般为512字节,正好一个扇区的大小。数据块的开始是1字节的开始令牌,值为“0FE”,结束是2字节的CRC。该操作的通信过程如图4所示。通信过程点击看原图WRITE_SINGLE_BLOCK是单数据写操作指令,在接收到主机传来的数据后,SD卡会发送一个值为0x5的数据响应,之后进入busy状态。该操作的单数据写操作如图5所示。单数据写操作按照以上通信过程编写程序,单数据块读和写的程序流程如图6所示。单数据块读和写的程序流程点击看原图4结果验证将容量为1GB的SD卡插入SD读卡器,再将读卡器插入PC机的USB接口中,此时系统出现“可移动磁盘(H:)”根目录。打开winhex软件,点击“工具”下拉菜单中的“打开磁盘”,选择“物理磁盘”中的“RMl:CenericSTORAGEDEVICE(O.9G,USB)”,单击“确定”按钮,得到该SD卡第一个物理扇区的数据。该SD卡在偏移量从446开始的16个字节有数据“00033D0006ODEDDBF90000OO075F1E00”,该扇区结束的两个字节为“55AA”,其余部分数据均为“00”。将SD卡取出,插入本设计电路的SD卡座中,用示波器连接D0、CLK和DI线,接通电源,测量SPI总线上的波形。本设计利用dsPIC33FJ64GP706的SPI接口实现了对SD存储卡的操作,可以把SD卡和dsPIC33F系列DSC两方面的优点集中到一个嵌入式系统中,有较高的利用价值。IC200PWR001MR-J2S-20BMPUPCBHD10-9-1939PHD36-24-23STHD36-24-31STTSX08ED12R8TK-PRR021CI830FVUS011-NA1756-IB16ISOE1756-IF161756-IR6I/A1756-OB16I1771-IXE/D6DR4004-7J1747-L5531746-P43503EFCM10E140CPU43412A1747-L532/EWDP3-014.08016MD1010-0BA00GV7-RS150140CRP81100SK829007-BSK829007-DDCD60X7/14140CPS114206ES5482-8MA13140XTS00200P0903ZE1746-OB32SW926CSGM-08A314CSGM-08A314C.1786-RPA140CPS12420140CRA93200140NOE77101MA-0185-100MA-0186-100140CPS11420P0940BRE4809-436-016-D1784-PKTX2711-K10C152711-NM2322711-NMCCEX-DWR16LS6804-I400A1756-PA72C1756-A131756-ENBT1756-IB321756-IF161756-OB321756-TBCH1756-TBS6H1747-L5511747-L5511756-IF16VT3006-S35/R1FBM042750060IBSTME24AL4/SF42750578IBST24AO42750769IBSSTZF24BKRB-T2751700IBSTME24BDO1/3-2502752932IBSSTME24BKRB-T140ACI04000140CPS11420140DDO353003IF681.962098-DSD-01051403776-1001747-L542A02B-0236-C131CS4HB39ACM28AEN16137-118IC200PWR102FCIMR-HB4A0112ABA6FC5210-0DA20-2AA1416NHM300301747-M13PXI-83301762-IT4LC1F185VM100/R-TAES2000-9725GPIB-USB-HS140CPS114201756-TBNH1746-IA161746-NT81746-OW161746-P4140AVI030001756-ENBTTSXP57253CUB4LPA06B-0113-B075#0005SPEEDREGULATORMAXSPEED2140CPS114201756-CNBR1756-ENBT1756-IR6I1756-L61H-PCP-J-141-D1746-IB161746-OW161746-P21747-L5511746-NIO4V1746-OB321746-OW8DGM60-ASAKFBM2013951746-N04I1746-NR46ES5980-OAE111747-AICIC697CGR9351746-0W161762-IF2OF21394-AM04DV505-400SAB490NRP95400V-103-1C24-TFBM026ES7123-1FB50-0AB01756-ENBT602453-59AOKYM6W21IC697BEM731VG-301+VG-036FP2-HSCT140CPS11420140CPU11303140DDI35300140DDO353001746-IM161746-OW16140CRA93100K-TFT-AN-CCFTMA-0185-100MA-0186-1001747-CP3(USB)1747-CP3(串口)1747-L5421756-L6111BRCX-300-J-10C11BRCX-300-J-10C.1746-NI83503E3604E3700A3805E83129563-8109662-8109791-6209861-610BPHM64A06B-6093-H1523150-MCM2098-DSD-010RCM470LY1756-CNB/D1756-DNB1756-L631606-XLS80E1756-CNB1756-ENBT1756-L611756-PA72PS-M06D12S5-NJ1L(S)C25DND2301/2NPT(M)/直径14*2材质304SSIFRATC-600ARMS-TSG-TZATCS-15SCXI-1000SCXI-1166SCXI-1327PPC-105TDLS6100140NOE77101C40H-C3DR-DE1756-L61B1756-CNB1770-KFD1756-IF6I1756-PA721756-PA75140DRA84000140CPU43412A140DDI841001747-L551CIMR-XCAA21P5IC693CPU364CLM01.3-X-0-4-B-FW6AV6545-0DA10-0AX0OP-620MA-0185-1001771-OFE23CP260.60.1GPIB-USB-HSWATLOWANAFAZECLS208MDD065D-N-060-N2M-095PB1MDD112D-N030-N2M-130GA0MPL-A320H-HJ22AA1756-L61140CPS22400M22NRXA-LNF-NS-00DSDP150ACS510-01-07A2-4ACS550-01-125A-4ACS550-01-180A-46AV66480AC113AX0MSR16R/T6AV66480AC113AX0TSXP57103M1756-TBCH6AV3607-1JC20-0AX13F88L-16000306385S0207KT971756-A41756-CNBR1756-ENBT1756-L611756-PA721756-RM1756-RMC1EFC3M080P0916DB1746-IB321756-CNB/D1756-OW16I1756-TBCH/A1784-PKTX5136-PFB-1041746-A131746-NI836643805E4119ADPS-400ABXBTGT2130IC200ALG230IC200ALG320IC200ALG620IC200CHS022IC200CPUE05IC200MDL640IC200MDL740IC200PWR002IC698CHS009IC698CRE030IC698ETM001IC698PSA100L3MF-032/64GFOKS-G序列号S/N:118516-002AS-S908-1201756-DNB/D140CPS11420140CRP81100140DA0853003500-15-02-02-0083121746-NT4140DAI753001756-BA1AS-P810-000IMMFP12MVME5110-2261-MPC74101734D-IB8XOW81746-NO4I6AV66480AC113AX06FC5247-0AA30-0AA01746-A131746-NI8SIEMENSOP76AV3607-1JC20-0AX0MC-4/11/03/4001771-CP2140NOE77101140DAI74000140DAO84210140XTS0020020B-VECTB-C0MVI56-MCMIC697ALG440)