【ESP32】BL0942功耗传感器SPI接口驱动

这篇具有很好参考价值的文章主要介绍了【ESP32】BL0942功耗传感器SPI接口驱动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

BL0942功耗模块在物联网设备中的应用比较广泛,本博文完成ESP32基于SPI接口驱动功耗BL0942模块(上海贝岭公司)的寄存器的读写,从而可以完成寄存器模式的配置,以及读取寄存器的值完成电流电压,功率等值的计算。

1. bl0942 电路设计

bl0942,esp32,单片机,linux
bl0942,esp32,单片机,linux

2. bl0942 spi驱动时序

在通信模式下,先发送 8bit 识别字节(0x58) 或(0xA8), (0x58)是读操作识别字节, (0xA8)是写操作
识别字节,然后再发送寄存器地址字节,决定访问寄存器的地址。下图分别示出读出和写入操作的数据传送顺序。 一帧数据传送完成, BL0942 重新进入通信模式。每次读/写操作所需的 SCLK 的脉冲个数均为 48 位。
bl0942,esp32,单片机,linux
bl0942,esp32,单片机,linux
bl0942,esp32,单片机,linux

3. esp32 spi 接口简介

参考:【ESP32-IDF】 02-4 外设-SPI_Ciaran-byte的博客
SPI资源描述
   esp32一共有4个spi外设。
SPI0和SPI1是专有SPI,其中SPI0是私有的,用于系统主flash的,不对用户开放。SPI1只能用于主机模式,引脚与SPI0共用,用于操作系统主flash。SPI0与SPI1共用同一个总线判决器。
SPI2和SPI3是通用SPI,给用户使用,用于驱动外部设备。SPI2也叫做HSPI,SPI3也叫做VSPI。SPI2和SPI3的引脚可以任意安排。并且每个SPI可以使用三个片选线。意味着每个SPI外设可以同时驱动三组设备。

bl0942,esp32,单片机,linux

4. esp32驱动 bl0942 测试结果

4.1 读寄存器

数据格式:
发送 :读写cmd + 寄存器address
返回: data_l + data_m + data_r + checksum

说明:BL0942模块通讯都是 3byte , 不足 24bit 的高位补零,,注意大小端格式
bl0942,esp32,单片机,linux
bl0942,esp32,单片机,linux

4.2 写寄存器

数据格式: 读写cmd + 寄存器address + data_l + data_m + data_r + checksum 每帧共6 byte ,其中发送数据为4byte
bl0942,esp32,单片机,linux文章来源地址https://www.toymoban.com/news/detail-627495.html

5. esp32驱动 bl0942 代码解析

  • esp32的spi接口初始化 bl0942_spi_bus_init();
  • 将设备添加到esp32的spi总线上
  • 读写寄存器测试

5.1 初始化

esp_err_t bl0942_spi_bus_init(){

    esp_err_t ret;
    ESP_LOGI(TAG, "Initializing bus SPI%d...", EEPROM_HOST+1);
    spi_bus_config_t buscfg={
        .miso_io_num = PIN_NUM_MISO,
        .mosi_io_num = PIN_NUM_MOSI,
        .sclk_io_num = PIN_NUM_CLK,
        .quadwp_io_num = -1,
        .quadhd_io_num = -1,
        .max_transfer_sz = 60*8,   // 最大传输值
    };
    ret = spi_bus_initialize(EEPROM_HOST, &buscfg, DMA_CHAN);  // esp32 spi 接口初始化
    ESP_ERROR_CHECK(ret);
    if(ret==ESP_OK)
         printf("Initializing esp32_spi_bus success! \r\n");
   return ret;
}

5.2 添加设备

//Attach the LCD to the SPI bus
esp_err_t bl0942_spi_bus_add_device(){

        esp_err_t ret;

        spi_device_interface_config_t devcfg={
         .address_bits = 8,     //配置地址位长度,如果设置为0,在通讯的时候就不会发送地址位
         .command_bits = 8,      //配置命令位长度
         .clock_speed_hz = 800*1000,     //  800 khz
         .mode = 1,              //SPI mode 1
        /*从EEPROM读取忙信号的时序要求不能容易地被SPI事务模拟。我们需要通过SW控制CS引脚来手动检查忙信号*/
        .spics_io_num = -1,
        .queue_size = 7, //传输队列大小,决定了等待传输数据的数量
        .flags = SPI_DEVICE_HALFDUPLEX | SPI_DEVICE_POSITIVE_CS, //半双工通信
    };  
    ret=spi_bus_add_device(EEPROM_HOST, &devcfg, &spi);
    ESP_ERROR_CHECK(ret);  
    if(ret==ESP_OK)
        printf("bl0942_spi_bus_add_device success!  \r\n"); 
    return ret;    
}

到了这里,关于【ESP32】BL0942功耗传感器SPI接口驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32采集问答式串口传感器数据写入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日
    浏览(50)
  • ESP32设备驱动-DPS310气压传感器驱动

    Infineon 的 DPS310 传感器是一款高精度气压传感器,非常适合测量高度变化,精度高达 ±0.002 hPa(或 ±0.02 m)高精度模式和 ± 1 hPa 绝对精度。 这意味着您可以在设置海平面压力时以 1 = 米的精度知道您的绝对高度,并以高达 2 厘米的精度测量高度变化。 这使其成为适用于无人机

    2024年02月07日
    浏览(41)
  • ESP32设备驱动-BMP183温度传感器驱动

    BMP183 是 BMP085 的功能兼容后继产品,BMP085 是面向消费类应用的新一代高精度数字压力传感器。 BMP183 的超低功耗、低电压电子器件针对移动电话、PDA、GPS 导航设备和户外设备的使用进行了优化。 BMP183 在快速转换时的低海拔噪声仅为 0.25 米,可提供卓越的性能。 SPI 接口允许

    2024年02月06日
    浏览(56)
  • ESP32应用教程(0)— PMW3901MB光流传感器

    文章目录 前言 1 传感器介绍 1.1 关键特征 1.2 关键参数 2 硬件概述 2.1 信号引脚 2.2 参考电路图 3 寄存器 3.1 寄存器列表 3.2 性能优化寄存器 4 代码说明 4.1 结构体说明 4.2 编译说明 5 波形分析 本文介绍了在 ESP32 DEVKIT V1 开发板上开发 PMW3901MB-TXQ1  光流传感器的过程。 PMW3901MB-T

    2024年02月11日
    浏览(38)
  • ESP32-硬件IIC读取温湿度传感器SHT30

    esp32 使用硬件I2C读取温湿度传感器SHT30,例程基于 EDP-IDF-4.4.X 的I2C Simple Example 例程修改 打开 VSCODE ,通过 查看-- 命令面板(快捷键Ctrl+Shift+P),打开 ESP-IDF 的例程后,选择 i2c_simple 例程,点击 Create project using example i2c_simple,选择自己要存储的目录。【PS:工程的目录不要有中文路

    2024年02月02日
    浏览(42)
  • 冰箱主控 32位MCU,多通道、高精度的AD采样配合温度传感器,实现冰箱各温室的精确控温;低功耗设计

    概览 小华高性价比32位MCU,多通道、高精度的AD采样配合温度传感器,实现冰箱各温室的精确控温;低功耗设计,绿色低碳、节能环保;模块化设计,充分利用丰富的通讯接口,使主控板、显示板和驱动板灵活搭配,设计方便。 方案特点 48MHz32bit ARM Cortex-M0+内核 多种低功耗模

    2024年04月28日
    浏览(42)
  • 使用 ESP32 设计智能手表第 2 部分 - 环境光和心率传感器

     文末提供 包含Arduino源码+原理图+Gerber+3D文件 的免费设计资料。          上一章中我们研究了如何为我们的智能手表项目制作一些有趣的表盘。在这一部分中,我们将研究如何将一些传感器连接到我们的智能手表,并将连接 BH1750 环境光传感器和 MAX30102 心率传感器。我们

    2024年02月02日
    浏览(33)
  • ESP32应用教程(1)— VL53L3CX距离传感器

    文章目录 前言 1 产品概述 1.1 技术规格 1.2 系统框图 1.3 设备引脚分布 2 工作流程 2.1 系统功能描述 2.2 状态机描述 2.3 测距模式说明 3 控制接口 3.1 设备地址 3.2 I²C写1个字节数据 3.3 I²C读1个字节数据 3.4 I²C写多个字节数据 3.5 I²C读多个字节数据 3.6 I²C 接口 - 参考寄存

    2024年02月11日
    浏览(67)
  • ESP32设备驱动-SCD40二氧化碳湿度和温度传感器驱动

    SCD4x 是 Sensirion 的下一代微型 CO2 传感器。 该传感器基于光声 NDIR 传感原理和 Sensirion 的专利 PASens® 和 CMOSens® 技术,以无与伦比的价格和最小的外形尺寸提供高精度。 SMD 组装允许以成本和空间有效的方式集成传感器,并具有最大的设计自由度。 片上信号补偿是通过内置的

    2024年02月11日
    浏览(41)
  • 传感器使用——ESP-WROOM-32 and INMP441麦克风音频采集

             使用不同传感器前需要了解其连接及通信方式。对于 ESP-WROOM-32 and INMP441麦克风 是通过 I2S 方式进行通信。具体连接引脚参照下图: ESP-WROOM-32引脚示意图          使用的麦克风为MEMS麦克风,具体规格可参照芯片规格数说明。 INMP441麦克风         I2S音频连接

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包