MR25H40驱动,求助!!

2019-07-16 07:54发布

各位大神,最近在研究一个芯片MR25H40,随机存储器件,但是折腾了好几天了一个驱动还没弄好,有没有人有这个芯片用过的驱动呀,可以分享一下吗,谢谢各位了!
我饿的邮箱:i@eamonning.com

还有,这个是我写的代码,大家看看哪里有问题呀,谢谢了!


  1. void MR25H40_SendByte(INT8U c)
  2. {
  3.         
  4.         INT8U i;
  5.         for(i=0;i<8;i++){
  6.                 if(c&0x80){
  7.                         MR25H40_MOSI_1;               
  8.                 }else{
  9.                         MR25H40_MOSI_0;
  10.                 }
  11.                 //__nop();
  12.                 MR25H40_SCK_0;
  13.                 //__nop();
  14.                 MR25H40_SCK_1;
  15.                 c <<= 1;
  16.         }
  17. }
  18. INT8U MR25H40_GetByte(void)
  19. {
  20.         INT8U c=0,i,t;
  21.         for(i=0;i<8;i++){
  22.                 c <<= 1;
  23.                 t=MR25H40_MISO;
  24.                 MR25H40_SCK_1;
  25.                 if(t){
  26.                         c |= 0x01;
  27.                 }
  28.                 MR25H40_SCK_0;
  29.         }
  30.         return c;
  31. }

  32. INT8U MR25H40_Read(INT32U addr)
  33. {
  34.         INT8U c;
  35.         MR25H40_CS_0;//Delay(20000);
  36.         MR25H40_SendByte(MR25H40_READ);
  37.         MR25H40_SendByte(((addr & 0x00FFFFFF) >> 16));        
  38.         MR25H40_SendByte(((addr & 0x0000FFFF) >> 8));
  39.         MR25H40_SendByte(addr & 0x000000FF);
  40.         c=MR25H40_GetByte();                        
  41.         MR25H40_CS_1;//Delay(20000);
  42.         return c;
  43. }

  44. void MR25H40_Write(INT32U addr,INT8U data)
  45. {
  46.         MR25H40_CS_0;//Delay(20000);
  47.         MR25H40_SendByte(MR25H40_WRITE);
  48.         MR25H40_SendByte(((addr & 0x00FFFFFF) >> 16));        
  49.         MR25H40_SendByte(((addr & 0x0000FFFF) >> 8));
  50.         MR25H40_SendByte(addr & 0x000000FF);
  51.         MR25H40_SendByte(data);               
  52.         MR25H40_CS_1;//Delay(20000);
  53. }

  54. void MR25H40_Init(void)
  55. {
  56.         
  57.         GPIO_SetDir(MR25H40_HOLD_PORT,        MR25H40_HOLD_MASK,        GPIO_DIRECtiON_OUTPUT);
  58.         GPIO_SetDir(MR25H40_CS_PORT,        MR25H40_CS_MASK,        GPIO_DIRECTION_OUTPUT);
  59.         GPIO_SetDir(MR25H40_SCK_PORT,        MR25H40_SCK_MASK,        GPIO_DIRECTION_OUTPUT);
  60.         GPIO_SetDir(MR25H40_MOSI_PORT,        MR25H40_MOSI_MASK,        GPIO_DIRECTION_OUTPUT);
  61.         GPIO_SetDir(MR25H40_MISO_PORT,        MR25H40_MISO_MASK,        GPIO_DIRECTION_INPUT);

  62.         PINSEL_SetPinMode(MR25H40_MISO_PORT,MR25H40_MISO_PIN,PINSEL_BASICMODE_PLAINOUT);        
  63.         
  64.         
  65.         //初始化线状态                           
  66.         MR25H40_HOLD_1;//Delay(20000);
  67.         MR25H40_CS_1;//Delay(20000);
  68.         MR25H40_SCK_1;//Delay(20000);
  69.         MR25H40_MOSI_0;
  70.         
  71.         Delay(200);
  72.         
  73.         //唤醒芯片
  74.         MR25H40_CS_0;        
  75.         MR25H40_SendByte(MR25H40_WAKE);
  76.         MR25H40_CS_1;
  77.         //Delay(20000);
  78.         
  79.         Delay(200);         
  80.         
  81.         //使能写
  82.         MR25H40_CS_0;
  83.         MR25H40_SendByte(MR25H40_WREN);
  84.         MR25H40_CS_1;

  85.         Delay(200);
  86.         
  87.         //写状态寄存器
  88.         MR25H40_CS_0;
  89.         MR25H40_SendByte(MR25H40_WRSR);
  90.         MR25H40_SendByte(0x02);
  91.         MR25H40_CS_1;        
  92.         
  93.         Delay(200);
  94.         

  95.         //读状态寄存器
  96.         //MR25H40_CS_0;
  97.         //__nop();               
  98.         //MR25H40_SendByte(MR25H40_RDSR);
  99.         //byte=MR25H40_GetByte();
  100.         //__nop();
  101.         //MR25H40_CS_1;
  102.         
  103. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。