RA4M2开发IOT(8)----IIC驱动OLED

RA4M2开发IOT.8--IIC驱动OLED

  • 概述
  • 视频教学
  • 样品申请
  • 硬件准备
  • 参考程序
  • 修改IIC驱动
  • OLED属性配置
  • 移植SSD1306
  • 字符取模
  • ASCII显示
  • 图片取模
  • 显示图片

概述

本章旨在通过 I²C 接口驱动 OLED 显示屏(常见型号如 SSD1306),实现图形和文本的显示功能。OLED 屏幕具有低功耗、自发光、对比度高等优点,适用于嵌入式人机界面显示。

最近在瑞萨RA的课程,需要样片的可以加qun申请:925643491。

在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV15EMbzGEy7

RA4M2开发IOT(8)----IIC驱动OLED

样品申请

https://www.wjx.top/vm/rCrkUrz.aspx

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。
主控为R7FA4M2AD3CFL#AA0

在这里插入图片描述
同时添加RA4M2_IOT扩展版。

在这里插入图片描述

参考程序

https://github.com/CoreMaker-lab/RA4M2_IOT

https://gitee.com/CoreMaker/RA4M2_IOT

修改IIC驱动

若同一个 I²C 总线上挂载多个不同地址的设备,只需在每次通信前调用 R_SCI_I2C_SlaveAddressSet() 设置目标设备地址,即可灵活访问多个设备,无需初始化多个 I²C 控制器实例。
由于LSM6DSV16X的地址是0x6B,所以在读写上添加如下函数。

    R_SCI_I2C_SlaveAddressSet(&g_i2c2_ctrl, 0x6B, I2C_MASTER_ADDR_MODE_7BIT);assert(FSP_SUCCESS == err);

在这里插入图片描述

OLED属性配置

查看手册,可以得知OLED的IIC地址为“b0111100” or “b0111101”,即0x3c或者0x3d。

在这里插入图片描述

在OLED的模块中,丝印上面写的地址是0x78(b0111 1000)或者0x7a(b0111 1010),是因为加了一位RW位,因为一般只要发送数据让屏幕进行显示。

在这里插入图片描述
这里接入的IIC和LSM6DSV16X是一个总线。

在这里插入图片描述

移植SSD1306

将用于驱动 OLED 显示屏的相关文件(oled.c, oled.h, oledfont.h, bmp.h)拷贝到当前 e2studio 项目 的 src 目录中。

在这里插入图片描述

OLED 驱动代码目前使用的是 基于 GPIO 模拟 I²C(Bit-Banging)方式 驱动 OLED。查看 oled.h 具体表现如下 。

在这里插入图片描述

删除 GPIO 宏定义与模拟 I²C 函数 。

在这里插入图片描述
通过 typedef 为无符号整型类型定义了简写别名,其中 u8 表示 8 位无符号整型(等同于 uint8_t),u32 表示 32 位无符号整型(等同于 uint32_t)。

typedef __uint8_t u8 ;
typedef __uint16_t u16 ;
typedef __uint32_t u32 ;

在这里插入图片描述
删除sys.h引用。
在这里插入图片描述

在 oled.c中删除模拟IIC的函数。

在这里插入图片描述

删除后如下所示。

在这里插入图片描述

在 oled.c最下面关闭IIC初始化。

在这里插入图片描述

删除delay.h引用。

在这里插入图片描述

添加E2STUDIO的部分头文件和定义。

#include "hal_data.h"
extern fsp_err_t err;
extern int  timeout_ms;
extern  i2c_master_event_t i2c_event ;

在这里插入图片描述

在 oled.c 中新增适用于 RA 平台的 I²C 写入函数, Send_Byte函数修改后如下所示。

//写入一个字节
void Send_Byte(u8 dat)
{
//    u8 i;
//    for(i=0;i<8;i++)
//    {
//        if(dat&0x80)//将dat的8位从最高位依次写入
//        {
//            OLED_SDA_Set();
//    }
//        else
//        {
//            OLED_SDA_Clr();
//    }
//        IIC_delay();
//        OLED_SCL_Set();
//        IIC_delay();
//        OLED_SCL_Clr();//将时钟信号设置为低电平
//        dat<<=1;
//  }R_SCI_I2C_SlaveAddressSet(&g_i2c2_ctrl, 0x3C, I2C_MASTER_ADDR_MODE_7BIT);assert(FSP_SUCCESS == err);err = R_SCI_I2C_Write(&g_i2c2_ctrl, &dat, 1, true);assert(FSP_SUCCESS == err);/* Since there is nothing else to do, block until Callback triggers*///while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms)while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms>0){R_BSP_SoftwareDelay(100U, BSP_DELAY_UNITS_MICROSECONDS);timeout_ms--;}if (I2C_MASTER_EVENT_ABORTED == i2c_event){__BKPT(0);}/* Read data back from the I2C slave */i2c_event = I2C_MASTER_EVENT_ABORTED;timeout_ms           = 100000;}

在这里插入图片描述

OLED_WR_Byte函数写入了地址0x78,然后是0x40或者0x00的数据/命令标志,最后是dat数据。

在这里插入图片描述

//发送一个字节
//mode:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 mode)
{
//    I2C_Start();
//    Send_Byte(0x78);
//    I2C_WaitAck();
//    if(mode){Send_Byte(0x40);}
//  else{Send_Byte(0x00);}
//    I2C_WaitAck();
//    Send_Byte(dat);
//    I2C_WaitAck();
//    I2C_Stop();R_SCI_I2C_SlaveAddressSet(&g_i2c2_ctrl, 0x3C, I2C_MASTER_ADDR_MODE_7BIT);assert(FSP_SUCCESS == err);uint8_t ii[2]={0x00,0x00};if(mode)ii[0] = 0x40;elseii[0] = 0x00;ii[1] = dat;err = R_SCI_I2C_Write(&g_i2c2_ctrl, ii, 0x02, true);assert(FSP_SUCCESS == err);/* Since there is nothing else to do, block until Callback triggers*///while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms)while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms>0){R_BSP_SoftwareDelay(100U, BSP_DELAY_UNITS_MICROSECONDS);timeout_ms--;}if (I2C_MASTER_EVENT_ABORTED == i2c_event){__BKPT(0);}/* Read data back from the I2C slave */i2c_event = I2C_MASTER_EVENT_ABORTED;timeout_ms           = 100000;
}

在这里插入图片描述

OLED_Refresh() 中的模拟 I²C 方式批量写入 OLED 显存内容。

在这里插入图片描述

修改如下。

//更新显存到OLED
void OLED_Refresh(void)
{
//    u8 i,n;
//    for(i=0;i<8;i++)
//    {
//        OLED_WR_Byte(0xb0+i,OLED_CMD); //设置行起始地址
//        OLED_WR_Byte(0x00,OLED_CMD);   //设置低列起始地址
//        OLED_WR_Byte(0x10,OLED_CMD);   //设置高列起始地址
//        I2C_Start();
//        Send_Byte(0x78);
//        I2C_WaitAck();
//        Send_Byte(0x40);
//        I2C_WaitAck();
//        for(n=0;n<128;n++)
//        {
//            Send_Byte(OLED_GRAM[n][i]);
//            I2C_WaitAck();
//        }
//        I2C_Stop();
//  }uint8_t i, n;fsp_err_t err;uint8_t buf[129]; // 控制字节 + 128 字节数据buf[0] = 0x40;     // 控制字节(0x40 表示后续为数据)for(i = 0; i < 8; i++){OLED_WR_Byte(0xB0 + i, OLED_CMD); // 设置页地址OLED_WR_Byte(0x00, OLED_CMD);     // 设置低列地址OLED_WR_Byte(0x10, OLED_CMD);     // 设置高列地址for(n = 0; n < 128; n++){buf[n + 1] = OLED_GRAM[n][i]; // 填充数据部分}// 设置 OLED I2C 地址(建议只设置一次,若已设置可略过)R_SCI_I2C_SlaveAddressSet(&g_i2c2_ctrl, 0x3C, I2C_MASTER_ADDR_MODE_7BIT);// 发送整帧显示数据(129字节)err = R_SCI_I2C_Write(&g_i2c2_ctrl, buf, sizeof(buf), true);assert(FSP_SUCCESS == err);// 等待写入完成while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms > 0){R_BSP_SoftwareDelay(100U, BSP_DELAY_UNITS_MICROSECONDS);timeout_ms--;}if (I2C_MASTER_EVENT_ABORTED == i2c_event){__BKPT(); // 出错断点}i2c_event = I2C_MASTER_EVENT_ABORTED;timeout_ms = 100000;}   
}

在这里插入图片描述
在hal_entry.c中添加对应头文件。

#include "oled.h"
#include "bmp.h"

添加OLED_Start() 函数 ,初始化OLED。

// OLED 屏幕启动函数:完成初始化、清屏、颜色/方向配置
static void OLED_Start(void)
{OLED_Init();              // 初始化 OLED 屏幕(发送初始化命令序列,设置工作模式)OLED_Clear();             // 清空显存(OLED_GRAM),并刷新,使屏幕全黑OLED_ColorTurn(0);        // 设置显示颜色模式:0 为正常显示,1 为反色显示(黑白反转)OLED_DisplayTurn(0);      // 设置显示方向:0 为正常方向,1 为上下翻转显示
}

在这里插入图片描述
在主程序中添加。

    // 初始化 OLED,保证屏幕点亮且处于默认显示状态OLED_Start();

在这里插入图片描述

字符取模

由于单片机的flash比较吃紧,所以要显示汉字需要先进行取模。首先需要设置为字符模式。

在这里插入图片描述

取模软件设置。

在这里插入图片描述

设置完之后就可以取自己想要汉字的编码,输入完毕点击生成字模即可。

在这里插入图片描述

在oledfont.h中放入字库。

const unsigned char Hzk1[][32]={
{0x84,0x84,0xFC,0x84,0x84,0x40,0x5E,0x50,0x50,0x50,0xDF,0x50,0x50,0x50,0x5E,0x00,0x10,0x30,0x1F,0x08,0x08,0x00,0xFE,0x02,0x02,0x7F,0x02,0x7E,0x02,0x82,0xFE,0x00},/*"瑞",0*/
{0x04,0xE4,0x24,0x24,0xA4,0x6F,0x04,0x24,0x64,0xAF,0x34,0xA4,0x64,0x24,0x04,0x00,0x00,0xFF,0x00,0x11,0x22,0x9C,0x40,0x3F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"萨",1*/
{0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xF8,0x00,0x00,0x00,0x10,0x10,0x13,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x00},/*"单",2*/
{0x00,0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00},/*"片",3*/
{0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00},/*"机",4*/};

在这里插入图片描述
OLED_ShowChinese() 函数,用于在 OLED 上显示汉字。代码逻辑已经实现了对不同大小字模的选择,主要依赖 Hzk1[]、Hzk2[]、Hzk3[]、Hzk4[] 这几个数组来获取字模数据。

在这里插入图片描述

在OLED_Start添加汉字显示驱动。

// OLED 屏幕启动函数:完成初始化、清屏、颜色/方向配置
static void OLED_Start(void)
{OLED_Init();              // 初始化 OLED 屏幕(发送初始化命令序列,设置工作模式)OLED_Clear();             // 清空显存(OLED_GRAM),并刷新,使屏幕全黑OLED_ColorTurn(0);        // 设置显示颜色模式:0 为正常显示,1 为反色显示(黑白反转)OLED_DisplayTurn(0);      // 设置显示方向:0 为正常方向,1 为上下翻转显示OLED_Clear();//清空 OLED 显存OLED_ShowChinese(0,0,0,16,1);//在坐标 (0,0) 显示 Hzk1[0],即汉字“瑞”,正显OLED_ShowChinese(16,0,1,16,1);//在坐标 (16,0) 显示 Hzk1[1],即汉字“萨”,正显OLED_ShowChinese(32,0,2,16,0);//在坐标 (32,0) 显示 Hzk1[2],即汉字“单”,反色OLED_ShowChinese(48,0,3,16,0);//在坐标 (48,0) 显示 Hzk1[3],即汉字“片”,反色OLED_ShowChinese(64,0,4,16,0);//在坐标 (64,0) 显示 Hzk1[4],即汉字“机”,反色OLED_Refresh();//将上述通过 OLED_ShowChinese() 写入 OLED_GRAM[][] 的内容,批量发送到 OLED 屏幕显示。如果没有调用这个函数,屏幕上不会出现任何内容(即写入显存但未更新)。
}

在这里插入图片描述
在这里插入图片描述

ASCII显示

OLED_ShowNum 和 OLED_ShowString 的主要作用就是 在 OLED 上显示 ASCII 字符组成的数字或字符串,使用的是内置的 ASCII 字体库(如 oledfont.h 中定义的 6×8 或 8×16 等点阵字体)。它们都调用了 OLED_ShowChar 这个底层函数来逐个字符地显示。

在OLED_Start添加显示ASCII。

    OLED_ShowNum(0, 16, 20250615, 8, 16, 1);//在坐标 (0,16) 显示20250615,长度8,字体16,正显OLED_ShowString(84, 16, "RA4M2", 16, 1);//在坐标 (84,16) 显示RA4M2,字体16,正显OLED_Refresh();// 将 OLED_GRAM 显存内容刷新到 OLED 屏幕上,显示数字和字符串

在这里插入图片描述

在这里插入图片描述

图片取模

设置为图形模式。

在这里插入图片描述

格式设置。

在这里插入图片描述

选择需要打开的文件。

在这里插入图片描述

打开的文件必须为bmp文件。

在这里插入图片描述

选择生成字模。

在这里插入图片描述

图片数据放在bmp.h中。

unsigned char BMP3[] =
{0x1E,0x0E,0x07,0x07,0x07,0x07,0x03,0x03,0x83,0x83,0xC7,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0x7E,0x3C,0xE0,0xF0,0xF8,0xF8,0xF8,0xF8,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0x1C,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF8,0xF8,0xE0,0xC0,0x80,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0x00,0xE0,0xF0,0xF8,0xF8,0xF8,0xF8,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0x9C,0xE0,0xF0,0xF8,0xF8,0xF8,0xF8,0xFC,0xFC,0xFC,0xBC,0xBC,0xBC,0x3C,0x3C,0x3C,0x3C,0x1C,0x00,0x00,0x80,0xC0,0xF0,0xF0,0xF8,0xF8,0xFC,0xFC,0xFC,0xF8,0xF8,0xC0,0x80,0x00,0xF0,0xF0,0xF8,0xF8,0xF8,0xF8,0xFC,0xFC,0xBC,0xBC,0xBC,0xBC,0x3C,0x3C,0x3C,0x1C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFD,0xF8,0xF0,0xE0,0xFF,0xBF,0x7F,0xFF,0xFF,0xFF,0xF7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE3,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x07,0x0F,0x3F,0x3F,0x7F,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0x00,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xF7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE3,0xE3,0xE0,0xE0,0xE1,0xE3,0xE3,0xE7,0xE7,0xEF,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7E,0xFC,0xFC,0xFE,0xFF,0xFF,0x7F,0x1F,0xEF,0xE1,0xE1,0xE3,0xEF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xF1,0xE3,0xE3,0xE7,0xE7,0xE7,0xEF,0xEF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x07,0x07,0x07,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"RA4M2_IOT\OLED\renesas-logo.bmp",0*/};

在这里插入图片描述

显示图片

查看属性可以知道分别率为19*117。

在这里插入图片描述

在 OLED 屏幕下半部分显示一张 117×19 的图片,并刷新屏幕显示。

    OLED_ShowPicture(0, 32, 117, 19, BMP3, 1);                // 在 OLED 屏幕的 (x=0, y=32) 位置显示一张宽 117、高 19 像素的图片 BMP3,正常模式显示OLED_Refresh();                                           // 将图片内容从缓冲区刷新到 OLED 屏幕上,真正显示出来R_BSP_SoftwareDelay(200, BSP_DELAY_UNITS_MILLISECONDS);  // 延时 200 毫秒

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/910628.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/910628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组题解——​轮转数组【LeetCode】

189. 轮转数组 通过三次反转操作&#xff0c;可以实现数组的轮转&#xff1a; 反转整个数组: 将数组完全反转&#xff0c;使得原数组的后 k 个元素移动到数组的前面。反转前 k 个元素: 将前 k 个元素反转&#xff0c;恢复它们的原始顺序。反转后 n - k 个元素: 将后 n - k 个元…

AR 眼镜之-条形码识别-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 条形码识别 1. &#x1f531; 技术方案 1.1 技术方案概述 1.2 实现方案 1&#xff09;相机App显示模块 2&#xff09;算法so库JNI模块 3&#xff09;算法条形码识别模块 2. &#x1f4a0; 实现相机App显示模块 2.1 创建 Ba…

华为云 Flexus+DeepSeek 征文|基于 CCE 集群部署 Dify 平台工作流:科研论文翻译与 SEO 优化工具的全流程设计实践

华为云 FlexusDeepSeek 征文&#xff5c;基于 CCE 集群部署 Dify 平台工作流&#xff1a;科研论文翻译与 SEO 优化工具的全流程设计实践 背景 作为被科研论文折磨已久的大学生&#xff0c;希望研究成果能被更多人看到&#xff0c;尤其是在学术全球化的趋势下&#xff0c;论文翻…

C++对象继承详解:从入门到精通

继承是面向对象编程的三大特性之一&#xff0c;也是C中实现代码复用和多态的重要机制。本文将带你深入理解C继承的核心概念与应用。 一、继承的基本概念 1.1 什么是继承&#xff1f; 继承允许我们基于已有的类创建新类&#xff0c;新类&#xff08;派生类&#xff09;可以继…

Jenkins安装与配置全攻略:从入门到高级功能实战

在DevOps实践中,Jenkins作为最流行的持续集成工具之一,扮演着至关重要的角色。本文将全面介绍Jenkins的安装、配置及高级功能使用,帮助开发、运维和测试团队快速搭建高效的CI/CD流水线。 一、Jenkins安装 1.1 环境准备 Jenkins官网:https://jenkins.io 注意:Jenkins 2…

[OS_26] 计算机系统安全 | CIA原则 | 侧信道攻击

系统调用是唯一访问操作系统对象的途径 拒绝越权访问 →→ Confidentiality拒绝越权修改 →→ Integrity(再加上公平资源调度 →→ Availability) 在操作系统 API 上&#xff0c;我们可以构建命令行工具、编译器、数据库、浏览器等丰富的应用。 当越来越多用户开始共享计算机、…

Chromium 136 编译指南 macOS篇:编译优化技巧(六)

1. 引言 在现代软件开发的高效化进程中&#xff0c;编译优化已经从简单的性能调优发展为一门综合性的工程科学。对于Chromium 136这样一个包含超过2500万行代码的超大规模项目而言&#xff0c;编译时间往往成为制约开发效率的关键瓶颈。在典型的开发场景中&#xff0c;一次完整…

Spark教程6:Spark 底层执行原理详解

文章目录 一、整体架构概述二、核心组件详解1. SparkContext2. DAG Scheduler3. Task Scheduler4. Executor 三、作业执行流程1. DAG 生成与 Stage 划分2. Task 调度与执行3. 内存管理 四、Shuffle 机制详解1. Shuffle 过程2. Shuffle 优化 五、内存管理机制1. 统一内存管理&am…

xlsx-style 插件批量导出多个sheet表格excel中遇到的问题及解决

Vue2中 前端界面导出表格&#xff0c;使用XLSXS插件版本(^0.8.13)导出表格存在表格背景颜色无法正常展示&#xff0c;百分比数据没有正常展示 【有条件的尽量先升级高版本插件&#xff0c;此插件版本对样式支持度不够】 优先考虑插件版本升级 同样的使用方法在vue3中没有出现错…

Java后端与Vue前端项目部署全流程:从环境配置到Nginx反向代理

文章目录 1. 准备项目所需的环境2. 后端项目打包步骤 1&#xff1a;使用 Maven 打包步骤 2&#xff1a;定位生成的 JAR 包步骤 3&#xff1a;上传 JAR 包到 Linux 系统步骤 4&#xff1a;验证 Java 环境步骤 5&#xff1a;启动 JAR 包 3. 前端项目打包步骤 1&#xff1a;执行 B…

Mybatis踩坑之一天

background: 对接AML系统&#xff0c;日间实时需要送交易对手要素过去&#xff08;目前主要是交易对手全名&#xff09;&#xff0c;夜间需要将历史交易送AML进行回溯&#xff0c;交互方式是文件。文件要素为日期、对手类型、对手名、交易流水之类。 设置对送AML的文件设计表…

【PyTorch】分布式训练报错记录-ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1)

最近&#xff0c;我在服务器上起基于PyTorch分布式框架的预训练实验&#xff0c;起初实验都在顺利进行&#xff0c;但是当我们把模型的深度与宽度调大之后&#xff0c;模型在训练几代之后便会出现如下的报错&#xff1a; WARNING:torch.distributed.elastic.multiprocessing.a…

有哪些词编码模型

有哪些词编码模型 词编码模型:是将自然语言符号映射为稠密的高维向量,使语义相近的词汇在向量空间中位置接近。 不过,也有部分模型会考虑字母或字符信息,如基于字节对编码(BPE)的模型会将单词拆分成子词,这里的子词可能是字母组合。 词编码模型的原理主要是通过机器学…

Mono 功能介绍与使用示例

Mono 功能介绍与使用示例 一、核心概念与特性 Mono 是 Spring Reactor 框架中的核心组件&#xff0c;属于响应式编程&#xff08;Reactive Programming&#xff09;模型&#xff0c;专注于处理包含 0 或 1 个元素 的异步序列[1][2][5]。其核心特点包括&#xff1a; 异步非阻…

5060Ti双显卡+LLaMA-factory大模型微调环境搭建

查看环境确定安装版本安装CUDA12.8安装Anaconda安装Visual Studio C桌面开发环境&#xff08;编译llama.cpp需要&#xff09;安装cmake(编译llama.cpp需要)安装llama.cpp(用于量化)安装huggingface-cli安装llama-factory安装PyTorch2.7.0安装bitsandbytes安装flash-attention加…

Lnmp和XunRuiCMS一键部署(Rocky linux)

先上传XunRuiCMS-Study.zip包到当前目录&#xff0c;可以去官网下载 #!/bin/bash # function: install nginx mysql php on Rocky Linux 9.5 with fixed PHP-FPM configip$(hostname -I | awk {print $1}) yhxunrui passwordxunrui123# 检查是否为root用户 if [ "$USER&qu…

高精度OFDR设备在CPO交换机中的应用

光电共封装&#xff08;CPO&#xff09;交换机的特点 核心需求&#xff1a;CPO将光模块与交换芯片集成封装&#xff0c;缩短电互连距离&#xff0c;降低功耗和延迟&#xff0c;但需解决以下挑战&#xff1a; 1.光器件微型化&#xff1a;硅光芯片、光纤阵列等需高精度制造。 …

Vulkan 通过 CMake 集成 Dear ImGUI

一、 目录与文件部署 从官网获取 IMGUI 代码库&#xff0c;在项目 extern 目录下新建 imgui 目录&#xff0c;将相关文件复制进去&#xff0c;构建出如下目录结构&#xff1a; . ├── build ├── extern │ ├── glfw │ ├── glm │ └── imgui │ ├…

Linux设备框架:kset与kobject基本介绍

系列文章目录 Linux设备框架&#xff1a;kset与kobject基本介绍 [link] Linux设备框架&#xff1a;kset与kobject源码分析 [link] kset与kobject基本介绍 一、前言二、kobject、kset和设备的关系2.1 kset 结构体2.2 kobject 结构体 三、总结 一、前言 Linux 设备模型如同一座拥…

【AI论文】扩展大型语言模型(LLM)智能体在测试时的计算量

摘要&#xff1a;扩展测试时的计算量在提升大型语言模型&#xff08;LLMs&#xff09;的推理能力方面已展现出显著成效。在本研究中&#xff0c;我们首次系统地探索了将测试时扩展方法应用于语言智能体&#xff0c;并研究了该方法在多大程度上能提高其有效性。具体而言&#xf…