我想要用stm32 的spi来做mma7455 的模块~程序也写好了可是就是读的数据很乱,求大虾们帮忙看看~或者给我

我想要用stm32 的spi来做mma7455 的模块~程序也写好了可是就是读的数据很乱,求大虾们帮忙看看~或者给我
#include "stm32f10x.h"
#include "lcd.h"
#include

u32 data;
u8 SendBuff[30];
void RCC_Configuration(void);
void GPIO_Configuration(void);
void LCD_Configuration(void);
void SPI_Configuration(void);
void delay(u32);

int main()
{
RCC_Configuration();
GPIO_Configuration();
LCD_Configuration();
SPI_Configuration();

GPIO_ResetBits(GPIOA,GPIO_Pin_4);
SPI1->DR|=(0x16&0x3f)<<1|0x80;
delay(8000);
SPI1->DR|=0x55;
delay(8000);
GPIO_SetBits(GPIOA,GPIO_Pin_4);

while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_4);
SPI1->DR|=(0x06&0x3f)<<1;
delay(80000);
data=SPI1->DR;
delay(80000);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
sprintf(SendBuff," %d ",data);
LCD_DisplayStringLine(Line0,SendBuff);

delay(500000);
}
}

void RCC_Configuration()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_AFIO,ENABLE);
}

void GPIO_Configuration()
{
GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_OD;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_OD;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_OD;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);

}

void LCD_Configuration()
{
STM3210B_LCD_Init();
LCD_Clear(Black);
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
}

void SPI_Configuration()
{
SPI_InitTypeDef SPI_InitStructure;

SPI_I2S_DeInit(SPI1);
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256;
SPI_InitStructure.SPI_FirstBit= SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial=0x07;
SPI_Init(SPI1,&SPI_InitStructure);

SPI_Cmd(SPI1,ENABLE);
}

void delay(u32 time)
{
for(;time>0;time--);
}
7455是倾角传感器么?你读一个数就显示一次,应该加一个简单的滤波,比如说均值滤波什么的。
← 上一篇: 下一篇: →