ArmCortex-M23开发板上手:从点亮LED到红外解码

原创 面包板社区 2023-06-13 20:01
踏浪而行,偶尔回首,虽不见印记,却也能望见远处的海岸。

从15年毕业,恍然已八年。

硬件工作了八年。也是爱的深沉。

还记得大学的时候在学生会认识的朋友,他有一天突然跟我推荐单片机开发板,那时候大二,打听过,单片机应该是下学期开始的课程。当时我觉得是一种命运的安排,就斥巨资购买了郭天祥的单片机开发板。鬼使神差的,竟然在大学那松散的时光里,我可以学习到深夜一两点!也是因为一块开发板,我考了两次的计算机二级(虽然后来知道没啥用),就很自然的过了。以前不是很理解的硬件知识,也通畅了。后来参加了学校组织的以及国家级的多次比赛,硬件开始让我爱不释手。在当时我也成为了我们班的专业代表,然而毕业始终给人猝不及防。

后来,经过一番忙碌,进入了现在的企业。

还记得简历上不敢写面试硬件工程师,最终写了个PCB工程师。或许也比较怀疑自己的硬件设计能力吧。

刚入职,大多是熟悉产品,于是我维修了公司的陈年旧板,看原理图,查资料,大部分还是需要自主去弄的。然后PCB的设计,学习cadence软件,设计第一块接口板。

恍惚一年多,五六层板也很轻松了。记得有一次评估PCB尺寸和接口位置,对应产品外观。逼不得已学习了最简单的SolidWorks操作。也算是初涉结构设计,后来我们结构设计工程师离职,我就揽下了这个工作。自古硬件结构不分家。PCB与结构的搭配产生了完美的产品。

就这样一晃就是四年,作为干硬件的竟然连原理图都没弄过,挺遗憾的,正当要得过且过的时候,也不知为啥我的领导开始疯狂输出各种原理图设计给我,并且算得上的手把手教学了,但是时间只给了我一个月,因为他要离职了,并且让我接替。有种悲喜交加的感觉。喜的是升职加薪,悲的是刚好两个项目来了。原理图、PCB、结构...

就从原理图认真开始吧,反正也只能这样。于是参考着参考设计,本想着删删减减就大功告成的,然而就在删电容的时候就卡住了,脑海中全是疑问:这个电容为什么选这个容量的?为什么耐压值是这个?这里没标注电容的材料啊?哎?为啥这个地方要这么多种类的电容啊?算了还是删电阻吧,然后又是疑问:多大电阻?多少精度?多大封装?后来还有电感...

最终的结果是全部保留原样的,反正能用,就不改了。最终导致了bom成本,板卡做的很大等问题。

第一次可以这样做,第二次也可以,但是等产品出来了,市面上同类产品,我们的定价颇高,于是老板请我去他办公室喝茶了。意思很简单,降bom成本。

路漫漫修远
以下是面包板社区“瑞萨RA2E1 32位Arm Cortex-M23开发板”评测活动,wind_west评测连载,分享于此,希望对你有所参考。

目录
(1)点亮LED
(2)硬件IIC 驱动LCD和LM75温度传感器
(3)基于U8G2显示菜单
(4)红外解码

点亮LED


1.1 软件资料下载:

链接:工具 - 瑞萨 RA MCU 生态社区(https://www.ramcu.cn/lists/21.html)

下载开发板资料,如图:

1.2 板卡的固件下载

资料列表:

板卡内容组成(我没有收到线),而且我们的板子和这里的不一样(可能还要自己买个J-link)。

直接可以使用USB线下载代码:

板子不一样,查看一下EK-RA2E1的原理图。

1.3 原理图

链接::https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra2e1-evaluation-kit-ra2e1-mcu-group

→注册后下载资料。

1.4 使用串口下载固件

参考:《使用UART串口烧写程序到瑞萨芯片.pptx》;

连接MCU下载固件:

下载成功了,但是LED没有闪烁。MCU选择如下:

修改MCU型号:

测试了P103发现引脚的电平没有变化,根据原理图来看,GPIO控制的是高电平端,如图:

上电,LED直接熄灭了。

修改时钟源:LOCO,

LED依旧常量。

修改代码LED正常闪烁

代码错误,没有加入while(1)循环:

时钟:LOCO 32768Hz(可以闪烁);HOCO 48MHZ(可以闪烁);MCU型号:R7FA2E1A72DNE;

小结:加入在生成的hal_entry()函数加入while()控制后,LED正常闪烁!

异常:确认,选择MCU型号-R7FA2L1AB2DFLLED不能点亮。

总结:开发板非常小巧,开发环境也很紧凑,但是即便是点灯,对新手也不太友好。

硬件IIC驱动LCD和LM75温度传感器



1、驱动LCD

野火也有RA系列的教程,链接:如何安装e2 studio/Keil开发环境 — [野火]瑞萨RA系列FSP库开发实战指南——基于野火启明开发板  文档(https://doc.embedfire.com/mcu/renesas/fsp_ra/zh/latest/doc/chapter2/chapter2.html)

从教程中得知,不能使用DAP仿真器(那基本上ST-LINK就更不要想了):

不过,没有关系,上一节已经实现了串口下载固件,继续往下走。当前计划使用IIC驱动一款显示屏,驱动的显示屏选择:oled12864, 如图:

设置IIC功能:

安装资料包中的PPT,针对IIC外设的使用,基本操作都讲到了。按照教程,增加IIC外设→属性:

当前P400引脚上没有输出信号:

需要注意的是:生成的工程使用rtos的时候,默认是没有之前的 hal_entry()函数调用了;所以这里已经没有调用之前的LED的初始化代码了,如图:

将OLED的初始化放到相关任务后,发现LED就不亮了;注释掉OLED操作的香瓜代码后,LED正常闪烁。最有可能是IIC的操作有错误,导致程序卡死了。现在没有初始化串口,所以暂时使用LED的亮灭状态来调试代码。

接上oled能够在示波器上看到IIC相关波形,如图:

所以,推测IIC初始化肯定成功了,只需要排除接线问题。果然,排除接线问题后,oled12864显示正常,如图:

这里的OLED驱动代码暂时也是使用的资料包里面的例程,后面会上U8G2显示库。

2、驱动温度传感器

刚好有一个LM75温度传感器。简单看了一下时序:

简单看了设置寄存器,在这里并不想使用输出报警功能,只要能够读取实时温度就行。

正常的IIC通信时序:

IIC的通信知识点有点陌生了,找了几张图补充了一下知识点:

寄存器地址:

应该连起来看,首先是设置指针寄存器,然后就可以随便读取温度了。

尝试定义多个IIC对象

在这里OLED和LM75都是使用的硬件IIC,所以尝试定义多个IIC对象:

这里定义了2个IIC对象,结果发现固件下载后,直接异常了,OLED不显示,温度不能采集:

所以只能换一种方式,点击相关属性的感叹号,能够找到一主多从的解析:

抓取了部分代码:

    /* Send data to I2C slave on the same channel */    err = R_IIC_MASTER_SlaveAddressSet(&g_i2c_device_ctrl_2, I2C_SLAVE_DISPLAY_ADAPTER, I2C_MASTER_ADDR_MODE_7BIT);    assert(FSP_SUCCESS == err);    g_i2c_tx_buffer[0]   = 0xAA;       // NOLINT    g_i2c_tx_buffer[1]   = 0xBB;       // NOLINT    g_i2c_callback_event = I2C_MASTER_EVENT_ABORTED;    timeout_ms           = I2C_TRANSACTION_BUSY_DELAY;    err = R_IIC_MASTER_Write(&g_i2c_device_ctrl_2, &g_i2c_tx_buffer[0], 2U, false);    assert(FSP_SUCCESS == err);    while ((I2C_MASTER_EVENT_TX_COMPLETE != g_i2c_callback_event) && timeout_ms)    {        R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);        timeout_ms--;;    }    if (I2C_MASTER_EVENT_ABORTED == g_i2c_callback_event)    {        __BKPT(0);    }

显示温度效果:


基于U8G2显示菜单



任务之间传递变量:

发现当硬件I2C的不同的外设放到不同的任务的时候,会引发未知错误,外设不能正常工作,暂时放弃。

移植U8g2-硬件IIC

移植完成:

参考链接:STM32 U8g2 spi软件驱动,spi硬件驱动_u8g2 驱动_weixin_58595117的博客-CSDN博客

主要修改函数:

uint8_t u8x8_byte_3wire_hw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr){uint8_t *p = (uint8_t*) arg_ptr;static _Bool flagCmdData = 0;switch (msg){/*通过SPI发送arg_int个字节数据*/case U8X8_MSG_BYTE_SEND:
for (int i = 0; i < arg_int; i++){if (flagCmdData){OLED_WR_DATA ((uint8_t) *(p + i));}else{OLED_WR_CMD ((uint8_t) *(p + i));}}
break;
/*设置DC引脚,DC引脚控制发送的是数据还是命令*/case U8X8_MSG_BYTE_SET_DC:if (arg_int){flagCmdData = 1;}else{flagCmdData = 0;}
break;
/*初始化函数*/case U8X8_MSG_BYTE_INIT:// SPI_OLED_Init ();break;
/* 下面功能无需定义 */
/*开始传输前会进行的操作,如果使用软件片选可以在这里进行控制*/case U8X8_MSG_BYTE_START_TRANSFER:break;
/*传输后进行的操作,如果使用软件片选可以在这里进行控制*/case U8X8_MSG_BYTE_END_TRANSFER:break;default:return 0;}return 1;}


画图

使用普通软件取模生成的数组,u8g2_DrawGlyph(&u8g2, 112, 56, _air_conditioner_4x_t ); 不能显示,需要使用函数 u8g2_DrawXBM(&u8g2, 13,23, 30, 23, _air_conditioner_4x_t)。

生成bmp文件

使用画图软件调整大小:

生成数组

使用取模软件 -PCtoLCD2022:

代码

const uint8_t _clock_4x_t[ ] ={
0x00,0xFC,0x07,0x00,0x00,0xFF,0x1F,0x00,0xC0,0xFF,0x7F,0x00,0xE0,0x03,0xF8,0x00,0xF0,0xE0,0xE0,0x01,0x78,0xE0,0xC0,0x03,0x3C,0xE0,0x80,0x07,0x1C,0xE0,0x00,0x07,0x0E,0xE0,0x00,0x0E,0x0E,0xE0,0x00,0x0E,0x07,0xE0,0x00,0x1C,0x07,0xE0,0x00,0x1C,0x07,0xE0,0x00,0x1C,0x07,0xF0,0x01,0x1C,0x07,0xF0,0x01,0x18,0x07,0xF0,0x01,0x1C,0x07,0xE0,0x03,0x1C,0x07,0x80,0x07,0x1C,0x07,0x00,0x0F,0x1C,0x0E,0x00,0x1E,0x0E,0x0E,0x00,0x1C,0x0E,0x1C,0x00,0x00,0x0F,0x3C,0x00,0x00,0x07,0x78,0x00,0x80,0x03,0xF0,0x00,0xE0,0x01,0xE0,0x03,0xF8,0x00,0xC0,0xBF,0x7F,0x00,0x00,0xFF,0x3F,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,/*"D:\BaiduNetdiskDownload\图标\时钟.bmp",0*//* (30 X 30 )*/};

显示图片:u8g2_DrawXBM(&u8g2, 13,23, 30, 30, _clock_4x_t);

需要注意的问题:u8g2_NextPage

u8g2_NextPage()的返回值一直为1,所以菜单页面不会更新。

修改 to_right( )函数:

当前显示温度需要关闭显示才能采集,因为温度采集和OLED显示都是使用硬件IIC,会产生冲突,所以这里针对U8G2做了一点改动,采集温度的时候关闭显示。底层代码逻辑:

关键变量:u8x8_d_ssd1306_128x64_noname_powersave0_seq、u8x8_d_ssd1306_128x64_noname_powersave1_seq。

详细显示如下:

static const uint8_t u8x8_d_ssd1306_128x64_noname_powersave0_seq[] = {U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */U8X8_C(0x0af), /* display on */U8X8_END_TRANSFER(), /* disable chip */U8X8_END() /* end of sequence */};
static const uint8_t u8x8_d_ssd1306_128x64_noname_powersave1_seq[] = {U8X8_START_TRANSFER(), /* enable chip, delay is part of the transfer start */U8X8_C(0x0ae), /* display off */U8X8_END_TRANSFER(), /* disable chip */U8X8_END() /* end of sequence */};

实际上调用display off会导致屏幕熄灭,体验不好,所以,将display off 的寄存器进行修改:0x0ae → 0x0af 。骗过U8G2驱动,关闭U8G2不会真的关闭OLED的显示。

按键驱动

按键驱动做的比较粗糙,只有几个状态:短按、短按释放、长按、长按释放。菜单的显示框架参考RTT。

参考:

RTT-thread进行按键驱动的移植:https://packages.rt-thread.org/index.html。

关于按键消抖的时间描述:https://packages.rt-thread.org/detail.html?package=agile_button ;

基于RTT的例子:https://gitee.com/RT-Thread-Mirror/rt-u8g2/

如图:


红外解码


1、为红外解码启动定时器

当前选择的模块,是费了很大心思的,选择了一个十分好的模块,如图:



因为发射和接收模块,价格很好-9个十分(0.9元/个)。选好了模块,接下来就是使用定时器来驱动发射模块了。

当前配置了GPT定时器后,无法编译通过。单片机Flash不够报错,已经很久没有体验到单片机Flash不够而报错的感觉了。

错误:

d:/renesas_e2_studio/setup_fsp_v3_2_0_e2s_v2021-07/toolchains/gcc_arm/9_2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld.exe: oled12864.elf section .text' will not fit in region FLASH'd:/renesas_e2_studio/setup_fsp_v3_2_0_e2s_v2021-07/toolchains/gcc_arm/9_2020q2/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld.exe: region `FLASH' overflowed by 3364 bytes

修改代码,减少数组定义,解决掉编译错误。

1.1、查阅RTOS的手册中关于定时器的资料

根据这里的意思,可以定位到GPT定时器中断。

RTSO的手中,有章节介绍怎样配置GPT定时器,那就说明RTOS和GPT定时器外设不冲突。

1.2、使用RTOS手册中的代码成功启用定时器

定时器配置:

代码启用定时器(没有采用PPT资料中的方式开启定时器):

//------------time0 -参数手册《e2_快速上手指南.pdf》
g_timer.p_api->open(g_timer.p_ctrl, g_timer.p_cfg); g_timer.p_api->start(g_timer.p_ctrl); //定时器回调函数 void gpt_callback(timer_callback_args_t *p_args) { (void)p_args;
if(counterGptTime ==1){ R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);///<点亮 }else if(counterGptTime ==2){ counterGptTime =0; R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);///<熄灭 } counterGptTime++;}


2、解码数据2.1、解码数据-1ms

修改GPT定时器的中断,通过在定时器中判断引脚电平的方式来解码红外数据。当前获取到的数据,异常。
空调26℃→

重复解码,修改打印的次数:




解码数据异常,查看示波器的采样波形:

当前ms级的中断无法有效解码,优化方向:红外信号的检测任务需要微妙级别的定时器中断。


2.2、解码数据-10us

修改GPT定时器的中断的时间,中断间隔时间10us,抓取的数据如下:



现在对比开头的几行数据(前面4行),解码已经很准确,解码的时间误差在x*10us之内。


2.3、精确分析

1650us的高电平解码:在误差范围内。

650us的高电平解码:在误差范围内。

抓取比较长的数据,第37个长时间高电平脉冲:在误差范围内。

比较典型的9ms低电平解码:在误差范围内。

接下来可以根据红外信号解码的数据,还原红外信号的发送。

解码主要代码(当前的解码和发射都是使用同一个定时器,所以将定时器的周期修改为:26us -38KHZ):

void infraredKeyValueDetect(void){
R_IOPORT_PinRead (&g_ioport_ctrl, BSP_IO_PORT_01_PIN_02, &infrared_data.p_port_value_port_102); infrared_data.counter++; if (infrared_data.p_port_value_port_102_last != infrared_data.p_port_value_port_102) { ///<电平如果发生翻转,记录高电平时间 if (infrared_data.p_port_value_port_102 & BSP_IO_LEVEL_HIGH) { ///<上升沿时间 if((infrared_data.data_index_low <148)&&(infrared_data.counter>1)){///<防止数组越界,26us的电平是异常电平 infrared_data.data_record_low[infrared_data.data_index_low++] = infrared_data.counter; } infrared_data.counter =0; } else { ///<下降沿时间 if((infrared_data.data_index_hight <148)&&(infrared_data.counter>1)){ infrared_data.data_record_hight[infrared_data.data_index_hight++] = infrared_data.counter; } infrared_data.counter =0; } } infrared_data.p_port_value_port_102_last = infrared_data.p_port_value_port_102; ///<保留上一次的GPIO电平值 ///<任务每一次循环:间隔时间26us ->函数放在定时器回调函数! if(infrared_data.counter > 1923){///<50ms秒钟空闲 infrared_data.counter =0; }}


3、MCU还原遥控器信号

红外发送有问题的原因,在红外发送二极管上不能检测到波形,原因:runStatus变量为bool型,没有进入下面的逻辑。

现在改为static int8_t runStatus = 0;,示波器能够检测到波形,如图:

但是程序运行会卡死,在RTOS中加大了相关任务的堆栈。

在红外发射引脚上,示波器能够抓取到,波形的起始位置有一个大概9ms的低电平,如图:

分析:波形反过来。

修改后,抓取要发送的信号进行比对:解码的信号和还原的信号,在波形时间上没有明显差异。

但是还原出来的信号和遥控器的信号还是有差异。

还原的信号和原始信号对比:还原出来的信号和遥控器的信号,在空闲的时候,还是有差异。

还原信号:

初始信号:

修改解码逻辑-将空闲状态取消,还原信号如下:

小结:当前只能确保红外发射管上的波形,接收管上的波形后面再确认。

END





点击阅读原文,免费申请

面包板社区 面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
评论
  • 本文继续介绍Linux系统查看硬件配置及常用调试命令,方便开发者快速了解开发板硬件信息及进行相关调试。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。查看系统版本信息查看操作系统版本信息root@ido:/# cat /etc/*releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=20.04DISTRIB_CODENAME=focalDIS
    Industio_触觉智能 2025-01-03 11:37 62浏览
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 44浏览
  • 【工程师故事】+半年的经历依然忧伤,带着焦虑和绝望  对于一个企业来说,赚钱才是第一位的,对于一个人来说,赚钱也是第一位的。因为企业要活下去,因为个人也要活下去。企业打不了倒闭。个人还是要吃饭的。企业倒闭了,打不了从头再来。个人失业了,面对的不仅是房贷车贷和教育,还有找工作的焦虑。企业说,一个公司倒闭了,说明不了什么,这是正常的一个现象。个人说,一个中年男人失业了,面对的压力太大了,焦虑会摧毁你的一切。企业说,是个公司倒闭了,也不是什么大的问题,只不过是这些公司经营有问题吧。
    curton 2025-01-02 23:08 168浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 74浏览
  • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
    Industio_触觉智能 2025-01-03 11:39 54浏览
  • 从无到有:智能手机的早期探索无线电话装置的诞生:1902 年,美国人内森・斯塔布菲尔德在肯塔基州制成了第一个无线电话装置,这是人类对 “手机” 技术最早的探索。第一部移动手机问世:1938 年,美国贝尔实验室为美国军方制成了世界上第一部 “移动” 手机。民用手机的出现:1973 年 4 月 3 日,摩托罗拉工程师马丁・库珀在纽约曼哈顿街头手持世界上第一台民用手机摩托罗拉 DynaTAC 8000X 的原型机,给竞争对手 AT&T 公司的朋友打了一个电话。这款手机重 2 磅,通话时间仅能支持半小时
    Jeffreyzhang123 2025-01-02 16:41 131浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 81浏览
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 68浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 71浏览
  • 国际标准IPC 标准:IPC-A-600:规定了印刷电路板制造过程中的质量要求和验收标准,涵盖材料、外观、尺寸、焊接、表面处理等方面。IPC-2221/2222:IPC-2221 提供了用于设计印刷电路板的一般原则和要求,IPC-2222 则针对高可靠性电子产品的设计提供了进一步的指导。IPC-6012:详细定义了刚性基板和柔性基板的要求,包括材料、工艺、尺寸、层次结构、特征等。IPC-4101:定义了印刷电路板的基板材料的物理和电气特性。IPC-7351:提供了元件封装的设计规范,包括封装尺寸
    Jeffreyzhang123 2025-01-02 16:50 153浏览
  • 影像质量应用于多个不同领域,无论是在娱乐、医疗或工业应用中,高质量的影像都是决策的关键基础。清晰的影像不仅能提升观看体验,还能保证关键细节的准确传达,例如:在医学影像中,它对诊断结果有着直接的影响!不仅如此,影像质量还影响了:▶ 压缩技术▶ 存储需求▶ 传输效率随着技术进步,影像质量的标准不断提高,对于研究与开发领域,理解并提升影像质量已成为不可忽视的重要课题。在图像处理的过程中,硬件与软件除了各自扮演着不可或缺的基础角色,有效地协作能够确保图像处理过程既高效又具有优异的质量。软硬件各扮演了什么
    百佳泰测试实验室 2025-01-03 10:39 53浏览
  • Matter加持:新世代串流装置如何改变智能家居体验?随着现在智能家庭快速成长,串流装置(Streaming Device,以下简称Streaming Device)除了提供更卓越的影音体验,越来越多厂商开始推出支持Matter标准的串流产品,使其能作为智能家庭中枢,连结多种智能家电。消费者可以透过Matter的功能执行多样化功能,例如:开关灯、控制窗帘、对讲机开门,以及操作所有支持Matter的智能家电。此外,再搭配语音遥控器与语音助理,打造出一个更加智能、便捷的居家生活。支持Matter协议
    百佳泰测试实验室 2025-01-03 10:29 57浏览
  • 前言近年来,随着汽车工业的快速发展,尤其是新能源汽车与智能汽车领域的崛起,汽车安全标准和认证要求日益严格,应用范围愈加广泛。ISO 26262和ISO 21448作为两个重要的汽车安全标准,它们在“系统安全”中扮演的角色各自不同,但又有一定交集。在智能网联汽车的高级辅助驾驶系统(ADAS)应用中,理解这两个标准的区别及其相互关系,对于保障车辆的安全性至关重要。ISO 26262:汽车功能安全的基石如图2.1所示,ISO 26262对“功能安全”的定义解释为:不存在由于电子/电气系统失效引起的危害
    广电计量 2025-01-02 17:18 144浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦