|
富士通FRAM心得提交 ---- 同样的程序,在STM32上不能运行 在MSP430上能运行
[复制链接]
本帖最后由 upc_arm 于 2014-1-6 23:22 编辑
同样的程序,在STM32上不能运行 在MSP430上能运行
两个代码是非常的相似,但是MSP430里读出 状态寄存器=0x02,STM32读出的数据会发生变化,不知道是什么原因。
下面分别贴代码,希望大家能指点指点
MSP430下的程序,参考别人的
STM32下的程序:
- #define CLR_MB85RS64_CS GPIO_WriteBit(GPIOC, SPI_MB85RS64_CS, Bit_RESET)
- #define SET_MB85RS64_CS GPIO_WriteBit(GPIOC, SPI_MB85RS64_CS, Bit_SET)
复制代码- void MySPI_GPIO_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(SPI_GPIO_RCC, ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = SPI_SCK | SPI_MOSI;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-
- GPIO_Init(SPI_PORT, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = SPI_MISO;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
-
- GPIO_Init(SPI_PORT, &GPIO_InitStructure);
-
- GPIO_SetBits(SPI_PORT, SPI_SCK | SPI_MOSI);
- }
- unsigned char Read(void)
- {
- unsigned char i=0,data=0;
- GPIO_WriteBit(SPI_PORT, SPI_SCK, Bit_RESET);
- for(i=0;i<8;i++)
- {
- data<<=1;
- GPIO_WriteBit(SPI_PORT, SPI_SCK, Bit_SET);;
- DelayXus(MB85SR64_DLY);
- //if(Read_MB85RS64_SO)
- if(GPIO_ReadInputDataBit(SPI_PORT, SPI_MISO))
- {data|=1;}
- GPIO_WriteBit(SPI_PORT, SPI_SCK, Bit_RESET);
- DelayXus(MB85SR64_DLY);
- }
- return data;
- }
- void Write(unsigned char data)
- {
- unsigned char i=0;
- GPIO_WriteBit(SPI_PORT, SPI_SCK, Bit_RESET);
- for(i=0;i<8;i++)
- {
- if((data&0x80)==0x80)
- {GPIO_WriteBit(SPI_PORT, SPI_MOSI, Bit_SET);}
- else
- {GPIO_WriteBit(SPI_PORT, SPI_MOSI, Bit_RESET);}
- data<<=1;
- GPIO_WriteBit(SPI_PORT, SPI_SCK, Bit_SET);
- DelayXus(MB85SR64_DLY);
- GPIO_WriteBit(SPI_PORT, SPI_SCK, Bit_RESET);
- }
- }
- MySPI_GPIO_Init();
- MySPI_MB85RS64_CS_Init();
- MySPI_MB85RS64_CS_H;
- while(1)
- {
- //Set Write Enable Latch
- CLR_MB85RS64_CS;
- Write(MB85RS64_WREN);
- SET_MB85RS64_CS;
-
- //Read
- CLR_MB85RS64_CS;
- Write(MB85RS64_RDSR);
- rd_data=Read();
- SET_MB85RS64_CS;
- printf("stat1==0x%02X\n",rd_data);
-
-
- //Set Write Enable Latch
- CLR_MB85RS64_CS;
- Write(MB85RS64_WRDI);
- SET_MB85RS64_CS;
-
- //Read
- CLR_MB85RS64_CS;
- Write(MB85RS64_RDSR);
- rd_data=Read();
- SET_MB85RS64_CS;
- printf("stat2==0x%02X\n",rd_data);
- DelayXms(1000);
- }
复制代码
|
|