f127314

    1. #include #define CE_H   P5OUT |=BIT3 #define CE_L   P5OUT &=~BIT3 unsigned char temp; void flash_inint(void) { P5DIR |= BIT3;     //  CE P2SEL |= BIT0|BIT1; // BIT0   SI P2DIR |= BIT0;    // SO P1SEL |= BIT7 ;// sck P1DIR |= BIT7; UCB0CTLW0 |= UCSWRST;                            //启用复位                      UCB0CTLW0 |= UCMST | UCSYNC |UCCKPL  ;// //分别为 主模式;同步模式;时钟极性选择 3线模式 UCB0CTLW0 |= UCMSB;       //UCB0CTLW0 |= UCMODE0;                         UCB0CTLW0 |= UCSSEL_1;                           // 选择ACLK时钟 UCB0BRW_L = 0x02;                                //  波特率控制位;fBitClock = fBRCLK/(UCBRx+1) ; UCB0BRW_H = 0;    //UCB0MCTLW = 0;                               // UCB0CTLW0 &= ~UCSWRST;                        //禁止复位 UCB0IE |=UCRXIE; } //******************************* void ID_date()// 这种情况下输出的波形和数据是正确的 {                              unsigned char  i; for(i=0;i
    2. 但是我给他__delay_cycles(24); 之后时间足够用了  CE这个管脚还是不能为高,我用示波器测试 单片机的输   si  sck 管脚有数据输出   flash芯片的  so  管脚输出的波形 单片机无法识别。
    3. #include #include "flash.h" //unsigned char num[]={0,0,0}; //unsigned char i; //******F LASH inint函数 ****************************** void flash_inint(void) { P5DIR |= BIT3;//  CE使能管脚 P2SEL |= BIT0|BIT1; P2DIR |=BIT1; P1SEL |= BIT7 ; P1DIR |=BIT7; UCB0CTLW0 |= UCSWRST;                            //启用复位                      UCB0CTLW0 |= UCMST | UCSYNC | UCMSB| UCCKPL;//  |UCCKPL //分别为 主模式;同步模式;时钟极性选择  0是低 1是高; //UCB0CTLW0 |= UCSTEM ; // | UCMODE1                        // 选择输出是  MSB还是LSB //UCBOSTATW_SPI |= UCFE; |UCBUSY; UCB0CTLW0 |= UCSSEL_1;                           // 选择ACLK时钟 UCB0BRW_L = 0x02;                                //  波特率控制位;fBitClock = fBRCLK/(UCBRx+1) ; UCB0BRW_H = 0;    //UCB0MCTLW = 0;                               // UCB0CTLW0 &= ~UCSWRST;                        //禁止复位 UCB0IE |=UCRXIE; //UCB0IE |=UCTXIE; } //*************写使能函数********************** void wren_date(void) { CE_L; UCB0TXBUF=0X06; CE_H; } //**************读取状态寄存器********************************** void RDSR_date(void) { CE_L; UCB0TXBUF=0X05; while (!(UCB0IFG & UCTXIFG)) ; temp=UCB0RXBUF; /*for(i=0;i>8); UCB0TXBUF=(addess & 0xFF); CE_H; } //****************全片擦除****************************** void ERASE_ALL(void) { wren_date();   UCB0TXBUF=0X60; delayms(4); //CE_H; } //*********读芯片id********************************** void ID_date() { //CE_H; CE_L; UCB0TXBUF=0X9F; //__delay_cycles(24); // } //******************读取RDID************************************* void RDID_date(void) { CE_L; UCB0TXBUF=0x90; UCB0TXBUF=0x00; UCB0TXBUF=0x00; UCB0TXBUF=0x00; __delay_cycles(24); //CE_H; } //*******************测试函数**************************** void ceshi(void) { CE_L; UCB0TXBUF=0X05; } //****************中断服务函数*************************** #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=USCI_B0_VECTOR __interrupt void USCI_B0_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(USCI_B0_VECTOR))) USCI_B0_ISR (void) #else #error Compiler not supported! #endif {     switch (__even_in_range(UCB0IV, 4))     {         case USCI_NONE: break;              // No interrupt         case USCI_SPI_UCRXIFG:              // RXIFG             while (!(UCA1IFG & UCTXIFG)) ;                 UCA1TXBUF= UCB0RXBUF;                 __delay_cycles (2);                                   // USCI_A0 TX buffer ready?                  break;                                      case USCI_SPI_UCTXIFG: break;       // TXIFG         default: break;     } } 我又擦除过哦     现在是这样  CE这个管教必须一直为低才能读出来  这是为什么?
    4. MSP430 SPI片选问题 1/1919 微控制器 MCU 2015-02-09
      同求啊!!!
    5. 你好 :     你的问题解决了吗? 我现在也遇到了同样的问题!!!!
    6. 你好版主:    我现在用SST25VF040B这个芯片 有个问题想麻烦你一下:   能正确读取出芯片的id     但是不能对芯片读写  这是什么问题   我用的单片机是msp430带 SPI 接口。    谢谢

最近访客

< 1/1 >

统计信息

已有2人来访过

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

留言

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


现在还没有留言