nothingo

    1. 看看学习,要用485~~谢谢楼主
    2. 跪求SDHC卡初始化时ACMD41的argument 13/13135 微控制器 MCU 2012-05-29
      谢谢你啊~~~前面CMD55那里初始化正常了,参数设置后循环发送后来得到0x01的响应了~~~不过ACMD41响应也是0x01。。。这个又出问题了。。。在前面已经发了CMD8对卡的类型判断过了
    3. 跪求SDHC卡初始化时ACMD41的argument 13/13135 微控制器 MCU 2012-05-25
      就是CMD55后面出现问题了,收到的响应不是0x01,而是0xC1。。。不知道怎么回事呢?
    4. 跪求SDHC卡初始化时ACMD41的argument 13/13135 微控制器 MCU 2012-05-25
      谢谢啊~~~再麻烦一下,CMD55的argument呢? 是这个地方的初始化出现问题了。。。
    5. 跪求SDHC卡初始化时ACMD41的argument 13/13135 微控制器 MCU 2012-05-24
      自己顶一下,做过SD卡的高手帮帮忙啊:Sad:
    6. 求助!录音数据储存到SD卡 15/5698 微控制器 MCU 2012-05-24
      楼主别的问题俺不知道应该怎么做,但是SD卡存储这块,楼上有人说了把AD采的数据存在一个数组里,这个数组可以直接往SD卡的扇区里面写,这个可行性比较高也比较简单一点
    7. 修改了读出来的数字全部是0xff。。。你遇到过这种情况么?
    8. 额。。。难道不是同一个datasheet???我再看看 谢谢你啊~~~~·
    9. 对着AT45DB161的数据手册上看的,是52H。。。主要是现在Status Register得到的响应不对,是我写命令的方式不对么? [ 本帖最后由 nothingo 于 2012-5-11 09:29 编辑 ]
    10. 读状态寄存器是只发0x57对吧?为什么收回的是0x4E呢?正常应该是0xA8吧?PS:现在是SPI的方式#include <MSP430X14X.h>#include "Flash_SPI.h"unsigned char Flash_Data[512];  void SPI_Init(void){    // P3.1 P3.2 P3.3作为SPI的管脚    P3SEL = BIT3 + BIT2 + BIT1;    //P3.1作为输出    P3DIR |= BIT1;     //P3.0作为输出    P3DIR |= BIT0;     //P3.3作为输出    P3DIR |= BIT3;     //P3.0输出高电平    P3OUT = BIT0;     //P3.1输出高电平    P3OUT = BIT1;     //P3.3输出高电平    P3OUT = BIT3;         // 以下设置SPI口的参数    U0CTL = 0X00; //将寄存器的内容清零    //数据为8比特,选择SPI模式,单片机为主机模式    U0CTL |= CHAR + SYNC + MM;        U0TCTL = 0X00; //将寄存器的内容清零    // 时钟源为SMCLK,选择3线模式    U0TCTL = CKPH + SSEL1 + SSEL0 + STC;         UBR0_0 = 0X45;  //波特率为115200    UBR1_0 = 0X00;    UMCTL_0 = 0X49; //调整寄存器        ME1 = USPIE0;  //SPI0模块允许    IE1 |= URXIE0; //接收中断允许    IE1 |= UTXIE0; //发送中断允许    }void Init_CLK(void){    unsigned int i;    BCSCTL1 = 0X00;//将寄存器的内容清零                   //XT2震荡器开启                   //LFTX1工作在低频模式                   //ACLK的分频因子为1    do     {    IFG1 &= ~OFIFG;                       // 清除OSCFault标志    for (i = 0x20; i > 0; i--);                    }    while ((IFG1 & OFIFG) == OFIFG);      // 如果OSCFault =1        BCSCTL2 = 0X00; //将寄存器的内容清零    BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1    BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1}void AT45DB161_cs_low(){  P3OUT &=0xfe;  }void AT45DB161_cs_high(){    P3OUT |=0x01;}void Delay_ms(unsigned long nValue)//毫秒为单位,8MHz为主时钟{    unsigned long nCount;    int i;    unsigned long j;    nCount = 2667;    for(i = nValue;i > 0;i--)    {    for(j = nCount;j > 0;j--);    }    return;}void Delay_us(unsigned long nValue)//微秒为单位,8MHz为主时钟{    int nCount;    int i;    int j;    nCount = 3;    for(i = nValue;i > 0;i--)    {    for(j = nCount;j > 0;j--);    }    return;}//Send one byte via SPIunsigned char write_AT45DB161_byte(const unsigned char data){  while (IFG1&UTXIFG0 ==0);    // wait while not ready for TX  halSPITXREADY  (IFG1&UTXIFG0)    TXBUF0=data;            // write  while (IFG1&URXIFG0 ==0);    // wait for RX buffer (full)  return (RXBUF1);}//Read register statusunsigned char AT45DB161_ReadStatus(void){    unsigned char status;    AT45DB161_cs_low();    status=write_AT45DB161_byte(0x57);    AT45DB161_cs_high();       return(status);}//Read from AT45DB161 to MSP430  ----Main Memory Page Read(52H+24bits addr+32bits dc)void AT45DB161_MainMemoryPageRead(unsigned int pageaddr,unsigned int baseaddr,unsigned int len,unsigned char *pbuf){  unsigned int i;  while(!(AT45DB161_ReadStatus()&0x80));  AT45DB161_cs_low();  write_AT45DB161_byte(0x52);  write_AT45DB161_byte((unsigned char)(pageaddr>>6));  write_AT45DB161_byte((unsigned char)((pageaddr<<2)|(baseaddr>>8)));  write_AT45DB161_byte((unsigned char)(baseaddr));  for(i=0;i<4;i++)    write_AT45DB161_byte(0x00);  for(i=0;i<len;i++)    pbuf=write_AT45DB161_byte(0xff);   AT45DB161_cs_high();}//Write from MSP430 to buffer-----Buffer1/2 Write(84H/87H+14bits dc+10bits addr) void AT45DB161_BufferWrite(unsigned char nbuf,unsigned int baseaddr,unsigned int len,unsigned char *pbuf){  unsigned int i;  while(!(AT45DB161_ReadStatus()&0x80));  AT45DB161_cs_low();  switch(nbuf)  {  case 1: write_AT45DB161_byte(0x84);          break;  case 2: write_AT45DB161_byte(0x87);          break;  }  write_AT45DB161_byte(0x00);  write_AT45DB161_byte((unsigned char)(baseaddr>>8));  write_AT45DB161_byte((unsigned char)baseaddr);  for(i=0;i<len;i++)    write_AT45DB161_byte(pbuf);  AT45DB161_cs_high();}//Write from MSP430 to AT45DB161 through Buffer------Main Memory Page Program Through Buuffer1/2//---------------------------------------------------void AT45DB161_MainMemoryPageProgramThroughBuuffer(unsigned char nbuf,unsigned int pageaddr,unsigned int baseaddr,unsigned int len,unsigned char *pbuf){  while(!(AT45DB161_ReadStatus()&0x80));  AT45DB161_cs_low();  switch(nbuf)  {  case 1: write_AT45DB161_byte(0x82);          break;  case 2: write_AT45DB161_byte(0x85);          break;  }   write_AT45DB161_byte((unsigned char)(pageaddr>>6));  write_AT45DB161_byte((unsigned char)((pageaddr<<2)|(baseaddr>>8)));  write_AT45DB161_byte((unsigned char)(baseaddr));  AT45DB161_cs_high();}void main(){  unsigned int i;  WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗  Init_CLK();  SPI_Init();  for(i=0;i<512;i++)                  Flash_Data=i;   AT45DB161_MainMemoryPageProgramThroughBuuffer(1,100,0,512,Flash_Data);  //buffer 1,page 100,addr 0,length 512  for(i=0;i<512;i++)                  Flash_Data=0;   AT45DB161_MainMemoryPageRead(100,0,512,Flash_Data);    //page 100,addr 0,length 512  while(1);}哪里有问题求帮助啊。。。:Sad:
    11. 现在改用开发板调试用SPI了,寄存器读数又变成0x4E了。。。可是都没往里面写过东西啊,怎么比较位成1,还始终是忙呢?
    12. 来个无聊的实作:股票信息显示器 8/3277 微控制器 MCU 2012-05-07
      好强啊。。。
    13. 自己顶一下吧。。。做过Flash存储的大师求赐教啊
    14. MSP430 系列单片机资料 7 册 73/22218 微控制器 MCU 2012-05-03
      谢谢楼主分享~~~~~
    15. 正想去图书馆借这本书呢~~~~谢谢楼主
    16. 一本不错的430 C教程,包括硬件和软件设计 22/6141 微控制器 MCU 2012-05-03
      谢谢LZ奉献~~~正在学习
    17. [活动贴]MSP430 SD卡挂载FATFS 30/12287 微控制器 MCU 2012-04-10
      向楼主学习啊~~~:congratulate:
    18. 我要写的程序本来就是不用文件系统的,直接写入数据
    19. 4G以上的卡大多是SDHC卡,要使用高速模式就要用SD模式,而不是SPI模式了。。。我记得看了的资料上是这样子的
    20. 请问楼主现在是在写SD卡还是SDHC卡啊???

最近访客

< 1/1 >

统计信息

已有536人来访过

  • 芯积分:--
  • 好友:--
  • 主题:3
  • 回复:33

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言