ESP32-SPI接口bl0942驱动
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驱动相关推荐
- ESP32 SPI 接口的应用
总体介绍 1. ESP32 共有 4 个 SPI 控制器 SPI0.SPI1.SPI2.SPI3,用于连接支持 SPI 协议的设备. SPI0 控制器作为 cache 访问外部存储单元接口使用; SP ...
- ADI Blackfin DSP处理器-BF533的开发详解7:SPI接口的驱动和应用(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 SPI 接口是 4 线串口,可以 ...
- 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.选择屏 ...
- 物联网开发笔记(60)- 使用Micropython开发ESP32开发板之SPI接口控制Micro SD卡TF卡模块
一.目的 这一节我们学习如何使用我们的ESP32开发板来通过SPI接口控制Micro SD卡TF卡模块. 二.环境 ESP32 + SPI接口控制Micro SD卡TF卡模块 + Thonny IDE ...
- ESP32学习(3):ESP32上运行ILI9341驱动LCD
系列文章目录 ESP32学习(1):ESP-IDF基于Visual Studio Code环境 ESP32学习(2):ESP32-S3上运行hello world 目录 系列文章目录 前言 一.硬件连 ...
- linux spi屏驱动程序,65 linux spi设备驱动之spi LCD屏驱动
SPI的控制器驱动由平台设备与平台驱动来实现. 驱动后用spi_master对象来描述.在设备驱动中就可以通过函数spi_write, spi_read, spi_w8r16, spi_w8r8等函数 ...
- 【Esp32】Esp32+sx1268 Spi接口驱动SX1268模块
[Esp32]Spi接口驱动SX1268模块 0. 实验结果 1.原理解析 2.硬件接线 3. SX1268 模块的 SPI 时序分析 4. 基于 ESP32 实现函数封装 4.1 读寄存器 4.2 ...
- ESP32 SPI驱动1.44寸TFT彩屏(5)
TFT-LCD 即薄膜晶体管液晶显示器.其英文全称为:Thin Film Transistor-Liquid Crystal Display. TFT-LCD 与无源 TN-LCD.STN-LCD 的 ...
- 物联网开发笔记(96)- Micropython ESP32开发之SPI接口控制Micro SD卡TF卡模块挂载内存卡
一.目的 这一节我们学习如何使用乐鑫的ESP32开发板连接SD卡模块,进行目录.文件的相关操作. 在早前我们也介绍过TFT SD卡的操作,这里我们重新复习一下. 物联网开发笔记(60)- 使用Micr ...
- NanoPi NEO Air使用十三:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V,模块加载的方式
上节使用fbtft来驱动SPI接口TFT屏幕,但是是编译进内核的方式. 本节再来测试下编译成模块的用法. 引脚 240x240分辨率,1.3寸,主控为ST7789VW. 与开发板的引脚连接确定如下: ...
最新文章
- 选择排序-直接选择排序
- SOA与云计算相结合推动企业发展
- 使用UDP的简单C/S程序
- lua面向对象封装及元表(metatable)性能测试
- at/cron计划任务初解
- Linux之|etc|group文件
- netty银行账目管理系统_基于Java的银行帐目管理系统.doc
- 专访唐宇迪博士:我是如何迈入同济大学校园的?浅谈人工智能,未来数据挖掘和计算机视觉是风口
- html中js怎么实现页面跳转页面,JavaScript实现页面跳转的几种常用方式
- NATAPP 内网穿透的使用
- 使用itextpdf将多个PDF文件合并为一个PDF文件
- Iometer存储测试工具参数说明- 2 Access Specifications
- 网上购物系统-关系型数据库设计举例
- 京瓷计算机无法打印机驱动程序,京瓷6525打印机驱动(修复京瓷6525打印机连接故障)V1.0 免费版...
- Ubuntu下安装Qt
- 2.4G无线模块(NRF24L01)学习(2)——单片机互相控制LED灯
- python笔记005-字符串-列表-元组
- 【Java8新特性】Stream流
- 触觉智能分享-RK3568 Android11修改默认输入法
- 【真北直播预报】让你的对话更有力,使十维宇宙不坠落