当前位置: 首页 > news >正文

计算机专业网站开发开题报告网络销售公司怎么运作

计算机专业网站开发开题报告,网络销售公司怎么运作,免费企业黄页网,电商网站模板免费STM32HAL库驱动ADXL345传感器(SPI协议) ADXL345传感器简介实物STM32CubeMX配置SPI配置片选引脚配置串口配置 特别注意(重点部分)核心代码效果展示 ADXL345传感器简介 ADXL345 是 ADI 公司推出的基于 iMEMS 技术的 3 轴、数字输出加…

STM32+HAL库驱动ADXL345传感器(SPI协议)

  • ADXL345传感器简介
  • 实物
  • STM32CubeMX配置
    • SPI配置
    • 片选引脚配置
    • 串口配置
  • 特别注意(重点部分)
  • 核心代码
  • 效果展示

ADXL345传感器简介

在这里插入图片描述
ADXL345 是 ADI 公司推出的基于 iMEMS 技术的 3 轴、数字输出加速度传感器。该加速度传感器的特点有:

a. 分辨率高。最高 13 位分辨率。

b. 量程可变。具有+/-2g, +/-4g, +/-8g, +/-16g 可变的测量范围。

c. 灵敏度高。最高达 3.9mg/LSB,能测量不到 1.0°的倾斜角度变化。

d. 功耗低。 40~145uA 的超低功耗,待机模式只有 0.1uA。

e. 尺寸小。整个 IC 尺寸只有 3mm5mm1mm, LGA 封装。

ADXL 支持标准的 I2C 或 SPI 数字接口,自带 32 级 FIFO 存储,并且内部有多种运动状态检测和灵活的中断方式等特性。
引脚如下所示:
在这里插入图片描述

实物

使用的是STM32F103ZET6单片机,使用了SPI2
主要接线为:CS接PB6;SCL接PB13;SDA接PB15;SDO接PB14。
在这里插入图片描述

STM32CubeMX配置

使用的是STM32F103ZET6单片机,使用SPI2,通过串口进行数据显示
时钟配置如下:
在这里插入图片描述

SPI配置

在这里插入图片描述

使用硬件SPI,根据ADXL345的SPI时序图,选择SPI的模式3,片选使用软件片选
在这里插入图片描述

片选引脚配置

片选使用的是PB6引脚
在这里插入图片描述

串口配置

在这里插入图片描述

特别注意(重点部分)

1.模块默认使用IIC通信,如果需要使用四线SPI通信,需要将模块的R4电阻取掉,如果不取,就抓不到时序。原因如下图所示:
在这里插入图片描述
模块将芯片的SDO引脚通过R4电阻直接连接到GND,如果不把R4电阻取掉,接线上去读时序是读不到信号的。
在这里插入图片描述
2.对于SPI采集,需要注意一下,有的MCU会把SPI1的SCK引脚用作调试引脚,导致使用逻辑分析仪抓取波形的时候,SCK引脚一直处于拉高状态,解决方案:A.将SCK引脚重映射去其他引脚;B.换一组SPI

核心代码

ADXL345.C的代码


#include "ADXL345.h"
#include "spi.h"
#include "stdio.h"
/** 作者:PrairieOne* csdn:PrairieOne* 邮箱:prairieone1024@163.com* 嵌入式技术交流群:826251093*/
#define SET_SPI_CS_H	HAL_GPIO_WritePin(SPI1_CS_GPIO_Port,SPI1_CS_Pin,GPIO_PIN_SET);
#define SET_SPI_CS_L	HAL_GPIO_WritePin(SPI1_CS_GPIO_Port,SPI1_CS_Pin,GPIO_PIN_RESET);//写字节
void ADXL345_Write(uint8_t addr, uint8_t value)
{addr &= 0x3F;SET_SPI_CS_L;HAL_SPI_Transmit(&hspi2, &addr, 1, 10);HAL_SPI_Transmit(&hspi2, &value, 1, 10);SET_SPI_CS_H;
}
//读字节
void ADXL345_Rread(uint8_t addr, uint8_t *value)
{addr &= 0x3F;	addr |= (0x80);SET_SPI_CS_L;HAL_SPI_Transmit(&hspi2, &addr, 1, 10);HAL_SPI_Receive(&hspi2, value, 1, 10);SET_SPI_CS_H;
}//读ID
uint8_t Get_Adxl345_ID(void)
{uint8_t DEVICEID = 0x00;uint8_t result = 0;ADXL345_Rread(DEVICEID, &result);return result;
}
//初始化
void ADXL345_Init(void)
{while (Get_Adxl345_ID() != 0xE5)//e5{printf("ADXL345 Init Fail:%x\r\n", Get_Adxl345_ID());HAL_Delay(1000);}ADXL345_Write(INT_ENABLE, 0x00);ADXL345_Write(DATA_FORMAT, 0x0B);ADXL345_Write(BW_RATE, 0x1A);ADXL345_Write(POWER_CTL, 0x08);ADXL345_Write(INT_ENABLE, 0x14);printf("ADXL345 Init Success\r\n");
}
//读取X轴数据
void ADXL345_XTest(void)
{short x;uint8_t addrxl = 0x32;uint8_t addrxh = 0x33;uint8_t xl, xh;ADXL345_Rread(addrxl, &xl);ADXL345_Rread(addrxh, &xh);x = (short)(((uint16_t)xh << 8) + xl);printf("X:%d\r\n", x);
}//读取Y轴数据
void ADXL345_YTest(void)
{short Y;uint8_t addrYl = 0x34;uint8_t addrYh = 0x35;uint8_t Yl, Yh;ADXL345_Rread(addrYl, &Yl);ADXL345_Rread(addrYh, &Yh);Y = (short)(((uint16_t)Yh << 8) + Yl);printf("Y:%d\r\n", Y);
}
//读取Z轴数据
void ADXL345_ZTest(void)
{short Z;uint8_t addrZl = 0x34;uint8_t addrZh = 0x35;uint8_t Zl, Zh;ADXL345_Rread(addrZl, &Zl);ADXL345_Rread(addrZh, &Zh);Z = (short)(((uint16_t)Zh << 8) + Zl);printf("Z:%d\r\n", Z);
}

ADXL345.H的代码

#ifndef ADXL345_H_
#define ADXL345_H_#include "main.h"
/** 作者:PrairieOne* csdn:PrairieOne* 邮箱:prairieone1024@163.com* 嵌入式技术交流群:826251093*//******************ADXL345寄存器命令定义**********************/
#define DEVICE_ID           0X00        //获取器件ID,0XE5
#define THRESH_TAP          0X1D        //敲击阀值
#define OFSX                0X1E	//x轴调整偏移值
#define OFSY                0X1F
#define OFSZ                0X20
#define DUR                 0X21
#define Latent              0X22
#define Window              0X23
#define THRESH_ACK          0X24
#define THRESH_INACT        0X25
#define TIME_INACT          0X26
#define ACT_INACT_CTL       0X27
#define THRESH_FF           0X28
#define TIME_FF             0X29
#define TAP_AXES            0X2A
#define ACT_TAP_STATUS      0X2B
#define BW_RATE             0X2C
#define POWER_CTL           0X2D#define INT_ENABLE          0X2E
#define INT_MAP             0X2F
#define INT_SOURCE          0X30
#define DATA_FORMAT        0X31
#define DATA_X0            0X32
#define DATA_X1            0X33
#define DATA_Y0            0X34
#define DATA_Y1            0X35
#define DATA_Z0            0X36
#define DATA_Z1            0X37
#define FIFO_CTL            0X38
#define FIFO_STATUS         0X39#define I_M_DEVID      ((uint8_t)0xE5) //器件ID=0XE5//初始化
void ADXL345_Init(void);
//读取X轴数据
void ADXL345_XTest(void);
//读取Y轴数据
void ADXL345_YTest(void);
//读取Z轴数据
void ADXL345_ZTest(void);
#endif /* ADXL345_H_ */

main的代码

/** 作者:PrairieOne* csdn:PrairieOne* 邮箱:prairieone1024@163.com* 嵌入式技术交流群:826251093*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_SPI2_Init();/* USER CODE BEGIN 2 */HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);/* USER CODE END 2 */ADXL345_Init();		/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){          //读取X轴数据ADXL345_XTest();//读取Y轴数据ADXL345_YTest();//读取Z轴数据ADXL345_ZTest();HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

效果展示

初始化模块的时序图:回读E5代码正确
在这里插入图片描述
在这里插入图片描述
遇事不决,可问春风!

http://www.shuangfujiaoyu.com/news/36788.html

相关文章:

  • 一流的福州网站建设seo优化培训课程
  • 怎样建立自己的销售网站seo推广外包报价表
  • 深圳网站建设培训哪家好宁波seo智能优化
  • 网站音乐播放器插件电商的推广方式有哪些
  • 吉林省建设信息网官网seo分析是什么意思
  • wordpress数据库改变后台账号seo网站优化价格
  • 企业网站内容运营每日舆情信息报送
  • 天津企业网站制作关键词优化网站排名
  • 如果做动态网站的开发设计网站的软件
  • 北京seo收费网络优化工程师骗局
  • 山东建设部网站英文网站seo发展前景
  • 做网站用什么语言好互联网营销培训
  • 长春做商业平台网站网页推广怎么做
  • 怎么推广自己做的网站吗值得收藏的五个搜索引擎
  • 福州网站建设专业公司公司网站与推广
  • 谷歌自建站和优化重庆企业站seo
  • 优速网站建设国内建站平台
  • 网站费计入什么科目全网推广
  • 公司门户网站是什么网络营销模式包括哪些
  • 做网站页面多少钱品牌推广策划书范文案例
  • 公司网站建设合同模板网络推广哪个好
  • 福田大型商城网站建设微博上如何做网站推广
  • 印刷报价网站源码下载站长工具百度百科
  • 上海建筑 公司网站网页设计与制作步骤
  • 那个网站卖做防水的烤枪企业网站是什么
  • 青浦网络公司网站百度热度指数排行
  • 招聘网站免费平台百度广告推广怎么做
  • 安徽华建建设工程公司网站中国进入一级战备2023
  • 无忧网站建设服务百度指数手机版
  • wordpress公式 插件seo实战培训班