ESP32-SPI接口bl0942驱动

  • bl0942 电路设计
  • bl0942 spi驱动时序
  • esp32 spi 接口简介
  • esp32驱动 bl0942 测试结果
    • 读寄存器
    • 写寄存器
  • esp32驱动 bl0942 代码解析
    • 初始化
    • 添加设备
    • 写寄存器
    • 读寄存器

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

bl0942 电路设计


bl0942 spi驱动时序

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


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外设可以同时驱动三组设备。

esp32驱动 bl0942 测试结果

读寄存器


写寄存器

esp32驱动 bl0942 代码解析

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

初始化

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;
}

添加设备

//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;
}

写寄存器

数据格式: 读写cmd + 寄存器address + data_l + data_m + data_r + checksum 每帧共6 byte ,其中发送数据为4byte

读寄存器

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

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

ESP32-SPI接口bl0942驱动相关推荐

  1. ESP32 SPI 接口的应用

    总体介绍 1. ESP32 共有 4 个 SPI 控制器 SPI0.SPI1.SPI2.SPI3,用于连接支持 SPI 协议的设备. SPI0 控制器作为 cache 访问外部存储单元接口使用; SP ...

  2. ADI Blackfin DSP处理器-BF533的开发详解7:SPI接口的驱动和应用(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 SPI 接口是 4 线串口,可以 ...

  3. ESP32 入门笔记08:1.54寸(240*240)彩色TFT 显示高清IPS LCD 屏幕 SPI接口

    目录 1.屏幕规格 2.原理图 3.程序实现 3.1引脚定义 3.2Adafruit_GFX / Arduino_ST7789版 3.3TFT_eSPI库版 3.3.1配置TFT_eSPI a.选择屏 ...

  4. 物联网开发笔记(60)- 使用Micropython开发ESP32开发板之SPI接口控制Micro SD卡TF卡模块

    一.目的 这一节我们学习如何使用我们的ESP32开发板来通过SPI接口控制Micro SD卡TF卡模块. 二.环境 ESP32 + SPI接口控制Micro SD卡TF卡模块 + Thonny IDE ...

  5. ESP32学习(3):ESP32上运行ILI9341驱动LCD

    系列文章目录 ESP32学习(1):ESP-IDF基于Visual Studio Code环境 ESP32学习(2):ESP32-S3上运行hello world 目录 系列文章目录 前言 一.硬件连 ...

  6. linux spi屏驱动程序,65 linux spi设备驱动之spi LCD屏驱动

    SPI的控制器驱动由平台设备与平台驱动来实现. 驱动后用spi_master对象来描述.在设备驱动中就可以通过函数spi_write, spi_read, spi_w8r16, spi_w8r8等函数 ...

  7. 【Esp32】Esp32+sx1268 Spi接口驱动SX1268模块

    [Esp32]Spi接口驱动SX1268模块 0. 实验结果 1.原理解析 2.硬件接线 3. SX1268 模块的 SPI 时序分析 4. 基于 ESP32 实现函数封装 4.1 读寄存器 4.2 ...

  8. ESP32 SPI驱动1.44寸TFT彩屏(5)

    TFT-LCD 即薄膜晶体管液晶显示器.其英文全称为:Thin Film Transistor-Liquid Crystal Display. TFT-LCD 与无源 TN-LCD.STN-LCD 的 ...

  9. 物联网开发笔记(96)- Micropython ESP32开发之SPI接口控制Micro SD卡TF卡模块挂载内存卡

    一.目的 这一节我们学习如何使用乐鑫的ESP32开发板连接SD卡模块,进行目录.文件的相关操作. 在早前我们也介绍过TFT SD卡的操作,这里我们重新复习一下. 物联网开发笔记(60)- 使用Micr ...

  10. NanoPi NEO Air使用十三:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V,模块加载的方式

    上节使用fbtft来驱动SPI接口TFT屏幕,但是是编译进内核的方式. 本节再来测试下编译成模块的用法. 引脚 240x240分辨率,1.3寸,主控为ST7789VW. 与开发板的引脚连接确定如下: ...

最新文章

  1. 选择排序-直接选择排序
  2. SOA与云计算相结合推动企业发展
  3. 使用UDP的简单C/S程序
  4. lua面向对象封装及元表(metatable)性能测试
  5. at/cron计划任务初解
  6. Linux之|etc|group文件
  7. netty银行账目管理系统_基于Java的银行帐目管理系统.doc
  8. 专访唐宇迪博士:我是如何迈入同济大学校园的?浅谈人工智能,未来数据挖掘和计算机视觉是风口
  9. html中js怎么实现页面跳转页面,JavaScript实现页面跳转的几种常用方式
  10. NATAPP 内网穿透的使用
  11. 使用itextpdf将多个PDF文件合并为一个PDF文件
  12. Iometer存储测试工具参数说明- 2 Access Specifications
  13. 网上购物系统-关系型数据库设计举例
  14. 京瓷计算机无法打印机驱动程序,京瓷6525打印机驱动(修复京瓷6525打印机连接故障)V1.0 免费版...
  15. Ubuntu下安装Qt
  16. 2.4G无线模块(NRF24L01)学习(2)——单片机互相控制LED灯
  17. python笔记005-字符串-列表-元组
  18. 【Java8新特性】Stream流
  19. 触觉智能分享-RK3568 Android11修改默认输入法
  20. 【真北直播预报】让你的对话更有力,使十维宇宙不坠落

热门文章

  1. win10 字体 变得模糊 有锯齿
  2. 智慧医疗何去何从?阿里云和行行查联合发布了《2021年中国智慧医疗行业白皮书》
  3. Shiro 放行Swagger
  4. 服装设计与工程_百度百科
  5. 地图坐标拾取【获取指定地点经纬度】
  6. jmeter录制脚本的步骤(很详细)
  7. 44款最适合海报设计的英文字体
  8. 从技术和历史的视角,理解Too many technical terms in FE BE
  9. VMware 12 专业版永久许可证密钥
  10. 光伏补贴双轨制仍将延续