国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議)

這篇具有很好參考價(jià)值的文章主要介紹了STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ADXL345傳感器簡介

STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)
ADXL345 是 ADI 公司推出的基于 iMEMS 技術(shù)的 3 軸、數(shù)字輸出加速度傳感器。該加速度傳感器的特點(diǎn)有:

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

b. 量程可變。具有+/-2g, +/-4g, +/-8g, +/-16g 可變的測量范圍。

c. 靈敏度高。最高達(dá) 3.9mg/LSB,能測量不到 1.0°的傾斜角度變化。

d. 功耗低。 40~145uA 的超低功耗,待機(jī)模式只有 0.1uA。

e. 尺寸小。整個(gè) IC 尺寸只有 3mm5mm1mm, LGA 封裝。

ADXL 支持標(biāo)準(zhǔn)的 I2C 或 SPI 數(shù)字接口,自帶 32 級 FIFO 存儲,并且內(nèi)部有多種運(yùn)動狀態(tài)檢測和靈活的中斷方式等特性。
引腳如下所示:
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)

實(shí)物

使用的是STM32F103ZET6單片機(jī),使用了SPI2
主要接線為:CS接PB6;SCL接PB13;SDA接PB15;SDO接PB14。
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)

STM32CubeMX配置

使用的是STM32F103ZET6單片機(jī),使用SPI2,通過串口進(jìn)行數(shù)據(jù)顯示
時(shí)鐘配置如下:
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)

SPI配置

STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)

使用硬件SPI,根據(jù)ADXL345的SPI時(shí)序圖,選擇SPI的模式3,片選使用軟件片選
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)

片選引腳配置

片選使用的是PB6引腳
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)

串口配置

STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)

特別注意(重點(diǎn)部分)

1.模塊默認(rèn)使用IIC通信,如果需要使用四線SPI通信,需要將模塊的R4電阻取掉,如果不取,就抓不到時(shí)序。原因如下圖所示:
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)
模塊將芯片的SDO引腳通過R4電阻直接連接到GND,如果不把R4電阻取掉,接線上去讀時(shí)序是讀不到信號的。
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)
2.對于SPI采集,需要注意一下,有的MCU會把SPI1的SCK引腳用作調(diào)試引腳,導(dǎo)致使用邏輯分析儀抓取波形的時(shí)候,SCK引腳一直處于拉高狀態(tài),解決方案:A.將SCK引腳重映射去其他引腳;B.換一組SPI

核心代碼

ADXL345.C的代碼


#include "ADXL345.h"
#include "spi.h"
#include "stdio.h"
/*
 * 作者:PrairieOne
 * csdn:PrairieOne
 * 郵箱:prairieone1024@163.com
 * 嵌入式技術(shù)交流群: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);

//寫字節(jié)
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;
}
//讀字節(jié)
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軸數(shù)據(jù)
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軸數(shù)據(jù)
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軸數(shù)據(jù)
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
 * 嵌入式技術(shù)交流群:826251093
 */
 
/******************ADXL345寄存器命令定義**********************/
#define DEVICE_ID           0X00        //獲取器件ID,0XE5
#define THRESH_TAP          0X1D        //敲擊閥值
#define OFSX                0X1E	//x軸調(diào)整偏移值
#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軸數(shù)據(jù)
void ADXL345_XTest(void);
//讀取Y軸數(shù)據(jù)
void ADXL345_YTest(void);
//讀取Z軸數(shù)據(jù)
void ADXL345_ZTest(void);
#endif /* ADXL345_H_ */


main的代碼

/*
 * 作者:PrairieOne
 * csdn:PrairieOne
 * 郵箱:prairieone1024@163.com
 * 嵌入式技術(shù)交流群: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軸數(shù)據(jù)
		ADXL345_XTest();
		//讀取Y軸數(shù)據(jù)
		ADXL345_YTest();
		//讀取Z軸數(shù)據(jù)
		ADXL345_ZTest();
		HAL_Delay(1000);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

效果展示

初始化模塊的時(shí)序圖:回讀E5代碼正確
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)
STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議),ARM單片機(jī),傳感器模塊,stm32,嵌入式硬件,單片機(jī)
遇事不決,可問春風(fēng)!文章來源地址http://www.zghlxwxcb.cn/news/detail-796778.html

到了這里,關(guān)于STM32+HAL庫驅(qū)動ADXL345傳感器(SPI協(xié)議)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32(HAL庫)驅(qū)動AD8232心率傳感器

    STM32(HAL庫)驅(qū)動AD8232心率傳感器

    目錄 1、簡介 2、CubeMX初始化配置 2.1 基礎(chǔ)配置 2.1.1 SYS配置 ?2.1.2 RCC配置 2.2 ADC外設(shè)配置 2.3?串口外設(shè)配置 ?2.4 GPIO配置 ?2.5 項(xiàng)目生成 ?3、KEIL端程序整合 3.1 串口重映射 3.2 ADC數(shù)據(jù)采集 3.3 主函數(shù)代碼整合 4 硬件連接 5 效果展示 本文通過STM32F103C8T6單片機(jī)通過HAL庫方式對AD8232心率

    2024年02月16日
    瀏覽(40)
  • STM32(HAL庫)驅(qū)動SHT30溫濕度傳感器通過串口進(jìn)行打印

    STM32(HAL庫)驅(qū)動SHT30溫濕度傳感器通過串口進(jìn)行打印

    目錄 1、簡介 2、CubeMX初始化配置 2.1 基礎(chǔ)配置 2.1.1 SYS配置 ?2.1.2 RCC配置 2.2 軟件IIC引腳配置 2.3?串口外設(shè)配置 ?2.4 項(xiàng)目生成 ?3、KEIL端程序整合 3.1 串口重映射 3.2 SHT30驅(qū)動添加 3.3 主函數(shù)代 3.4 效果展示 本文通過STM32F103C8T6單片機(jī)通過HAL庫方式對SHT30傳感器進(jìn)行數(shù)據(jù)的讀取,并

    2024年02月16日
    瀏覽(27)
  • STM32 HAL 驅(qū)動PM2.5傳感器(GP2Y10AU氣體檢測模塊)

    STM32 HAL 驅(qū)動PM2.5傳感器(GP2Y10AU氣體檢測模塊)

    目錄 1、簡介 2、CubeMX初始化配置 2.1 基礎(chǔ)配置 2.1.1 SYS配置 ?2.1.2 RCC配置 2.2 ADC外設(shè)配置 2.3?串口外設(shè)配置 ?2.4 項(xiàng)目生成 ?3、KEIL端程序整合 3.1 串口重映射 3.2 ADC數(shù)據(jù)采集 3.3 主函數(shù)代 3.4 效果展示 本文通過STM32F103C8T6單片機(jī)通過HAL庫方式對GP2Y10AU氣體檢測模塊進(jìn)行數(shù)據(jù)的讀取,

    2024年02月22日
    瀏覽(63)
  • 【ESP32】BL0942功耗傳感器SPI接口驅(qū)動

    【ESP32】BL0942功耗傳感器SPI接口驅(qū)動

    BL0942功耗模塊在物聯(lián)網(wǎng)設(shè)備中的應(yīng)用比較廣泛,本博文完成ESP32基于SPI接口驅(qū)動功耗BL0942模塊(上海貝嶺公司)的寄存器的讀寫,從而可以完成寄存器模式的配置,以及讀取寄存器的值完成電流電壓,功率等值的計(jì)算。 在通信模式下,先發(fā)送 8bit 識別字節(jié)(0x58) 或(0xA8), (0x5

    2024年02月14日
    瀏覽(53)
  • SPI傳感器接口設(shè)計(jì)與優(yōu)化:基于STM32的實(shí)踐

    SPI傳感器接口設(shè)計(jì)與優(yōu)化:基于STM32的實(shí)踐

    SPI(串行外設(shè)接口)是一種常用的串行通信協(xié)議,用于在微控制器和外部設(shè)備之間進(jìn)行全雙工的高速數(shù)據(jù)傳輸。 在本文中,我們將探討如何基于STM32微控制器設(shè)計(jì)和優(yōu)化SPI傳感器接口,并提供相應(yīng)的代碼示例。 1. SPI傳感器接口設(shè)計(jì) SPI傳感器接口設(shè)計(jì)的主要目標(biāo)是實(shí)現(xiàn)可靠、

    2024年01月19日
    瀏覽(37)
  • 【STM32(HAL庫)--DHT11溫濕度傳感器】

    【STM32(HAL庫)--DHT11溫濕度傳感器】

    stm32控制DHT11溫濕度傳感器,進(jìn)行溫濕度的讀取.以下是自己的一點(diǎn)學(xué)習(xí)過程和心得,若有不妥之處,還望各位大佬指正,在下感激不盡. DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器 。 它應(yīng)用專用的數(shù)字模塊采集技術(shù)溫濕度傳感技術(shù), 確保產(chǎn)品具有極高

    2024年04月15日
    瀏覽(28)
  • [STM32]HAL庫STM32CubeMX+DHT11溫濕度傳感器

    [STM32]HAL庫STM32CubeMX+DHT11溫濕度傳感器

    目錄 所用的工具: 知識概括: DHT11介紹: DHT11性能說明: 接口說明 ?電源引腳 串行接口?? 工程創(chuàng)建 1、設(shè)置RCC 2、時(shí)鐘設(shè)置 3、項(xiàng)目文件設(shè)置 4、設(shè)置IO口(DATA) 5、TIM時(shí)鐘配置 6、USART配置 ? 程序編寫: ? ? ? ???1、TIM3實(shí)現(xiàn)微秒(us)級延時(shí)函數(shù): 2、IO口配置 3、DHT11檢測

    2024年02月09日
    瀏覽(30)
  • 使用STM32的SPI接口實(shí)現(xiàn)與外部傳感器的數(shù)據(jù)交互

    使用STM32的SPI接口實(shí)現(xiàn)與外部傳感器的數(shù)據(jù)交互

    一、引言 外部傳感器是嵌入式系統(tǒng)中常用的外設(shè),用于檢測環(huán)境參數(shù)、采集數(shù)據(jù)等。通過STM32微控制器的SPI接口,可以與外部傳感器進(jìn)行數(shù)據(jù)交互,從而實(shí)現(xiàn)數(shù)據(jù)的采集和控制。 本文將介紹如何使用STM32的SPI接口實(shí)現(xiàn)與外部傳感器的數(shù)據(jù)交互,并提供示例代碼。 ?作者簡介:

    2024年01月23日
    瀏覽(40)
  • STM32使用HAL庫BH1750光照度傳感器

    STM32使用HAL庫BH1750光照度傳感器

    單片機(jī):STM32F103C8T6 光照度傳感器:BH1750 IDE:KEIL+STM32CUBEMX 1、STM32CUBEMX 1、頭文件 2、C文件 3、主函數(shù)操作BH1750

    2024年02月14日
    瀏覽(23)
  • STM32采集問答式串口傳感器數(shù)據(jù)寫入SD卡(spi模式)

    STM32采集問答式串口傳感器數(shù)據(jù)寫入SD卡(spi模式)

    STM32f103RCT6板子 問答式溫濕度傳感器(TTL信號) 外接SD卡模塊(淘寶都差不多) 1. SD卡模塊 ,采用SPI1接線 (CLK)SCK —PA5 (DATA0)MISO —PA6 (CMD)MOSI —PA7 (DATA3)CS —PA4 前面小括號里的是SDIO模式的接線,可以忽略。 2. 傳感器模塊 問答式TTL信號的傳感器都可以, 連接到板子的串口2,

    2024年02月05日
    瀏覽(41)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包