OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2444|回复: 3

ADXL345利用SPI总线通信失败,无法读取设备ID,求大家帮帮忙

[复制链接]

2

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-4-25
在线时间
3 小时
发表于 2018-5-14 21:05:41 | 显示全部楼层 |阅读模式
SPI初始话代码:

void SPI2_Init(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
SPI_InitTypeDef  SPI_InitStructure;


    RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE );
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //PB13/14/15ÆÕÍ¨ÍÆÍê
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;  
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 = 7;
SPI_Init(SPI2, &SPI_InitStructure);

SPI_Cmd(SPI2, ENABLE);
SPI2_ReadWriteByte(0xff);
}

//@ref SPI_BaudRate_Prescaler:SPI_BaudRatePrescaler_2~SPI_BaudRatePrescaler_256  

void SPI2_SetSpeed(u8 SPI_BaudRatePrescaler)
{
SPI2->CR1&=0XFFC7;
SPI2->CR1|=SPI_BaudRatePrescaler;
SPI_Cmd(SPI2,ENABLE);
}

u8 SPI2_ReadWriteByte(u8 TxData)
{      

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);

SPI_I2S_SendData(SPI2, TxData);
  
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET); //调用的时候程序一直在这里死循环
return SPI_I2S_ReceiveData(SPI2);
      
}

adxl345初始化:
void ADXL345_Init(void)
{
   
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOG, ENABLE);
//SPI2_Init();
/* FLASH_CS PG13 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOG, &GPIO_InitStructure);//
GPIO_SetBits(GPIOG,GPIO_Pin_13);

}

主函数//
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "key.h"
#include "adxl345.h"
#include "spi.h"
//x,y:¿ªÊ¼ÏÔʾµÄ×ø±êλÖÃ
//num:ÒªÏÔʾµÄÊý¾Ý
//mode:0,ÏÔʾ¼ÓËÙ¶ÈÖµ;1,ÏÔʾ½Ç¶ÈÖµ;
void ADXL_Show_num(u16 x,u16 y,short num,u8 mode)   //ADXL345ÏÔʾ
{
u8 valbuf[3];
if(mode==0)   //ÏÔʾ¼ÓËÙ¶ÈÖµ
{
  if(num<0)
  {
   num=-num;
   LCD_ShowString(x,y,tftlcd_data.width,tftlcd_data.height,16,"-");
  }
  else
  {
   LCD_ShowString(x,y,tftlcd_data.width,tftlcd_data.height,16," ");
  }
  valbuf[0]=num/100+0x30;
  valbuf[1]=num%100/10+0x30;
  valbuf[2]=num%100%10+0x30;
  LCD_ShowString(x+10,y,tftlcd_data.width,tftlcd_data.height,16,valbuf);
}
else   //&Iuml;&Ocirc;&Ecirc;&frac34;&frac12;&Ccedil;&para;&Egrave;&Ouml;&micro;
{
  if(num<0)
  {
   num=-num;
   LCD_ShowString(x,y,tftlcd_data.width,tftlcd_data.height,16,"-");
  }
  else
  {
   LCD_ShowString(x,y,tftlcd_data.width,tftlcd_data.height,16," ");
  }
  valbuf[0]=num/10+0x30;
  valbuf[1]='.';
  valbuf[2]=num%10+0x30;
  LCD_ShowString(x+10,y,tftlcd_data.width,tftlcd_data.height,16,valbuf);  
}  
}

int main()
{
u8 i=0;
u16 adxl345_TYPE=EN25Q64;
SysTick_Init(72);

LED_Init();
USART1_Init(9600);

KEY_Init();
SPI2_Init();

ADXL345_Init();
read_id();

}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2017-10-10
在线时间
29 小时
发表于 2018-5-15 16:28:46 | 显示全部楼层
先看引脚对不对。。。。
回复 支持 反对

使用道具 举报

2

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-4-25
在线时间
3 小时
 楼主| 发表于 2018-5-16 20:49:40 | 显示全部楼层
wxZk7621A4 发表于 2018-5-15 16:28
先看引脚对不对。。。。

引脚我都接对的,应该只用配置spi就可以吧! 串口一些乱七八糟的东西应该不用配置吧
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2017-10-10
在线时间
29 小时
发表于 2018-10-12 10:13:08 | 显示全部楼层
ytphaha 发表于 2018-5-16 20:49
引脚我都接对的,应该只用配置spi就可以吧! 串口一些乱七八糟的东西应该不用配置吧

不好意思  最近都没怎么上,问题解决了吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 18:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表