SWM341

01、I2C 简介

物理连接

1.png

I2C总线由时钟线SCL、数据线SDA两根线构成,连接在其上的设备分为主机和从机两种,I2C上的通信全部由主机发起。

I2C设备对总线的输出采用开漏输出结构,即它只有在总线和GND之间的NMOS管,没有总线和VDD之间的PMOS管。输出0时通过开启NMOS管将总线与GND短接;输出1时无法像推挽输出那样开启PMOS管将总线与VDD短接,而是只能通过关闭NMOS从而由外接的上拉电阻将总线拉到高电平。

由于上拉电阻阻值一般比较大(10K欧姆),因此如果此时有其他I2C设备输出0,总线会被拉到低电平。只有当总线上的所有设备都不输出0时,总线才是高电平;只要有一个设备输出0,总线就是低电平,这也就是所谓的“线与”。这是I2C总线应答与多主机通信的基础。

协议格式

2.png

0、空闲时总线上所有设备都不驱动总线,即都不开启NMOS管,总线由外部上拉电阻拉到高电平。

1、I2C上的通信全部由主机发起,主机通过发送起始位启动传输,起始位由SCL为高时SDA线上的下降沿产生。

2、起始位后面跟7位地址和1位读写方向指示(0表示主机向从机写入,1表示主机从从机读取),主机发送完这8位后停止驱动总线,总线由外部上拉电阻拉到高电平,被寻址的从机输出0将总线拉低。主机检测到这个低电平,就知道从机可以相应主机请求,可以进行数据传输。

3、数据传输阶段,若R/W=0,则主机发送数据,从机发送响应;若R/W=1,则从机发送数据,主机发送响应,每传输一个字节数据,后面都跟一个响应位。

4、数据传输完成后,主机发送停止位终止传输,终止位由SCL为高时SDA线上的上升沿产生。

5、由于SCL为高时,SDA的上升沿、下降沿均有特殊含义,因此I2C中数据传输时,SDA只在SCL为低时变化,在SCL为高时保持不变。即发送方在SCL为低时改变SDA状态,接收方在SCL上升沿读取SDA状态。

02、SWM341 I2C 接口

功能框图

3.png

SWM341 I2C 的核心是一个双向移位寄存器,发送时,数据通过TXDATA寄存器写入移位寄存器,然后按位移除到SDA引脚;接收时,将SDA引脚状态移入移位寄存器,通过RXDATA寄存器读出。

移位寄存器的移位节拍来自内部I2C时钟分频器(主机模式下)或SCL引脚(从机模式下),主机模式下时钟分频器产生的时钟同时输出到SCL引脚,驱动总线上的I2C从机的移位寄存器。

使用示例:读写 EEPROM AT24C024

int main(void)

{

         uint32_t i;

         uint8_t ack;


         SystemInit();

         SerialInit();

         I2CMstInit();


         while(1==1)

         {

              /*************** EEPROM Write ***************/  

              ack = I2C_Start(I2C0, (SLV_ADDR << 1) | 0, 1);

              if(ack == 0)

         {

                     printf("Slave send NACK for address\r\n");

                     goto nextloop;

          }


          ack = I2C_Write(I2C0, MEM_ADDR, 1);

          if(ack == 0)

         {

                    printf("Slave send NACK for memory address\r\n");

                    goto nextloop;

          }


         for(i = 0; i < 4; i++)

         {

                    ack = I2C_Write(I2C0, txbuff[i], 1);

                    if(ack == 0)

                    {

                            printf("Slave send NACK for data\r\n");

                            goto nextloop;

                     }

          }


          I2C_Stop(I2C0, 1);


          printf("Master Write %X %X %X %X @ %X\r\n", txbuff[0], txbuff[1], txbuff[2], txbuff[3], MEM_ADDR);



          for(i = 0; i < 1000000; i++) __NOP(); // 延时等待内部写入操作完成



          /*************** EEPROM Read ***************/

          ack = I2C_Start(I2C0, (SLV_ADDR << 1) | 0, 1);

          if(ack == 0)

          {

                   printf("Slave send NACK for address\r\n");

                   goto nextloop;

           }


           ack = I2C_Write(I2C0, MEM_ADDR, 1);

           if(ack == 0)

          {

                    printf("Slave send NACK for memory address\r\n");

                    goto nextloop;

          }


          for(i = 0; i < CyclesPerUs; i++) __NOP(); // 不加此延时,系统主频高于 100MHz 时,re-start 发不出来


           ack = I2C_Start(I2C0, (SLV_ADDR << 1) | 1, 1);

           if(ack == 0)

           {

                     printf("Slave send NACK for address\r\n");

                     goto nextloop;

           }


           for(i = 0; i < 3; i++)

           {

                      rxbuff[i] = I2C_Read(I2C0, 1, 1);

           }

           rxbuff[i] = I2C_Read(I2C0, 0, 1);

 

           printf("Master Read %X %X %X %X @ %X\r\n", rxbuff[0], rxbuff[1], rxbuff[2], rxbuff[3], MEM_ADDR);


           if((txbuff[0] == rxbuff[0]) && (txbuff[1] == rxbuff[1]) && (txbuff[2] == rxbuff[2]) && (txbuff[3] == rxbuff[3]))

                  printf("Success\r\n");

           else

                  printf("Fail\r\n");


nextloop:

           I2C_Stop(I2C0, 1);

           for(i = 0; i < SystemCoreClock/3; i++) __NOP();

      }

}

I2C_Start()的参数是7位从机地址和读写方向选择位,调用该函数在I2C总线上产生起始位,然后发送地址和方向位,读取从机响应位ACK并返回。执行该函数后需要检查返回的从机响应ack,若有从机相应,则继续后续读写操作;若没有从机相应,则打印调试信息然跳转到程序末尾。

EEPROM AT24C02 的 Page Write 帧格式如下:

4.png

设备地址后,需要发送要将数据写入EEPROM的位置(Word Address),然后再发送要写入的数据。程序中首先执行 I2C_Write(I2C0, MEM_ADDR, 1) 发送数据在EEPROM中的存储位置,然后执行 I2C_Write(I2C0, txbuff[i], 1) 将要写入 EEPROM的数据逐个发出。最后执行 I2C_Stop(I2C0, 1) 在总线上产生停止条件,终止数据传输。

需要注意的是,以上操作只是将要写入EEPROM的数据通过I2C接口写入EEPROM内部缓存中,EEPROM还需要一定时间将缓存中的数据写入实际存储介质中。若此时立即读取EEPROM,读取到的依然会是写入之前的数据。查手册可知,AT24C02 的写入时间大概 5ms。

AT24C02 的读取操作与上述的写入操作类似,唯一不同的是,在读取操作中,响应ACK由主机发送、从机检查,I2C_Read()调用中需要给出本次读取后响应ACK还是NAK(即不响应,不在ACK位时将SDA拉低)。在读取前面的数据时,需要响应ACK,以通知从机准备好后续数据;读取最后一个数据时,最好响应NAK,通知从机主机不再需要后续数据。

来源:华芯微特32位MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 18

华芯微特MCU的系列之SWM341&SWM34S,内核相同,34S在341基础上内置了SDRAM。341芯片使用M33内核,基于ARM-V8指令集的架构,对应的工具版本有更高的要求,详细如下:

1.png

01、Keil 版本

建议在v5.33以上,兼容性更好,通常应用v5.34。

02、调试工具

可用JLink或DapLink(需要支持ARM-V8版本),JLink硬件要V9以上,Segger版本要6.98以上。

注意:

设置flash Download的SIZE分配给下载算法flm的RAM要充足--0x4000

03、参考资料

百度网盘链接:https://pan.baidu.com/s/1atLWlk1_SUR8WjISr-Bfpw     提取码:byv2

2.png

 强烈建议先看--《屏驱动应用笔记》

《屏驱动应用笔记》路径:我的网盘 > 01.SYNWIT技术应用资料 > 09.SWM341 > 03.应用笔记 

MCU PACK包路径:我的网盘 01.SYNWIT技术应用资料 >00.其它公用资料 >02.KEIL工程下载算法库8器件支持包

341系列基础库路径:我的网盘 > 01.SYNWIT技术应用资料 > 09.SWM341 > 01.基础库 

64PIN 34SRE主控板原理图路径:我的网盘 > 01.SYNWIT技术应用资料 > 09.SWM341 > 02.最小系统板>00.SWM34SRET6-LQFP64 

100PIN 34SVE主控板原理图路径:我的网盘>01.SYNWIT技术用资料>09.SWM341> 02.最小系统板>01.SWM34SVET6-LOFP100 > 01.SWMDM-0FP100-34SVEA38A2

软件演示例程路径:我的网盘 > 01.SYNWIT技术应用资料>09.SWM341 >05.TFTLCD驱动例程 > 00.SWM34SxET 驱动 TTL-RGB TFTLCD应用例程

04、上位机 --【Synwit UI Creator】

华芯微特屏驱上位机【Synwit UI Creator】,已免费开放使用,所见即所得,下载路径:我的网盘 > 01.SYNWIT技术应用资料 > 100.Synwit UI Creator;使用手册同目录。

注意:

不要用中文名路径,路径不要太深,安装时关闭杀毒软件。

在以上使用过程中,如遇以下问题

1.发现找不到核,可以参看《SWM341找不到核参考方案》。

2.MCU在加密或锁住后,可用ISP模式(BOOT串口模式)擦除程序或烧录程序,参看《SWM341系列ISP模式操作参考》。

05、华芯微特SWM34S 介绍

SWM34S适用于对UI显示要求相对高、需要程序存储大的场景,可播放AVI 视频,支持JPEG硬解码。

SWM34S系列芯片采用Cortex-M33内核,主频高达150Mhz,内置Flash 512KB ,SRAM 64KB,具有丰富的IO端口(高达74个)和外设总线,内置2M/8M/16M SDRAM,用于TFT显示缓存,具有大容量,高速读写,封装小,高性价比的特点。内置LCD控制器,支持RGB888/GRB565 /I8080-16bit/I8080-8bit/SPI方式驱动TFT彩色液晶显示屏。

文末再附百度网盘链接

https://pan.baidu.com/s/1atLWlk1_SUR8WjISr-Bfpw提取码:byv2

来源:华芯微特32位MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 224

1、DMA2D模块基础知识

DMA2D是专用于图像处理的专业DMA。特别是刷单色屏,刷图片,刷Alpha(透明)混合效果全靠它,而且可以大大降低CPU利用率。

DMA2D主要实现了两个功能,一个是DMA数据传输功能,另一个是2D图形加速功能。

DMA数据传输

主要是两种方式,一个是寄存器到存储器,另一个是存储器到存储器。通过DMA可以大大降低CPU的利用率。

2D图形加速功能

支持硬件的颜色格式转换和Alpha混合效果。DMA2D可在以下四种模式下工作:

 · 寄存器到存储器                       

 · 存储器到存储器

 · 存储器到存储器并执行像素格式转换

 · 存储器到存储器并执行像素格式转换和混合

1.png

△ DMA2D模块结构框示意图

2、DMA2D前景层FIFO和背景层FIFO

DMA2D前景层FIFO和背景层FIFO获取要复制和/或处理的输入数据。这些FIFO根据相应像素格式转换器PFC中定义的颜色格式获取像素。

通过如下一组寄存器对它们进行编程:

 · DMA2D前景层存储器地址寄存器(FGMAR)           

 · DMA2D前景层偏移寄存器(FGOR)

 · DMA2D背景层存储器地址寄存器 (BGMAR)

 · DMA2D背景层偏移寄存器 (BGOR)

 · DMA2D行数寄存器(行数和每行像素数)(NLR)

DMA2D在寄存器到存储器模式下工作时,不激活任何FIFO。

DMA2D在存储器到存储器模式下工作时(无像素格式转换和混合操作),仅激活FG FIFO,并将其用作缓冲区。

DMA2D在存储器到存储器模式下工作时并支持像素格式转换时(无混合操作),不会激活BG FIFO。

3、DMA2D 前景层和背景层像素格式转换器 

DMA2D前景层和背景层像素格式转换器 (PFC)执行像素格式转换,以生成每像素32位的值。PFC还能够修改alpha通道。

转换器在第一阶段转换颜色格式。前景层像素和背景层像素的原始颜色格式分别通过 FGPFCCR和BGPFCCR的CFMT [3:0] 位来配置。

颜色格式的编码方式如下:

 · Alpha 值字段:透明【0xFF 值对应不透明像素,0x00 对应透明像素】           

 · R 字段代表红色

 · G 字段代表绿色

 · B 字段代表蓝色

如果原始格式不包括alpha通道,则会自动将alpha值设为0xFF(不透明)。通过ARGB8888模式支持按32位对齐24位RGB888。

生成32位值后,即可根据FGPFCCR/ BGPFCCR寄存器的AMODE [1:0]字段修改alpha 通道。

Alpha通道可以:

 · 保持不变(不做修改)                

 · 替换为FGPFCCR/BGPFCCR的ALPHA[7:0]值

 · 换为原始alpha值与FGPFCCR/BGPFCCR的ALPHA [7:0]值的乘积除以255所得商。

4、DMA2D混合器

DMA2D混合器成对混合源像素以计算结果像素。

混合将按以下公式执行:

2.png

混合器不需要任何配置寄存器。是否使用混合器取决于CR寄存器的MODE[1:0]字段中定义的DMA2D工作模式。

5、DMA2D输出PFC

输出PFC将像素格式从32位转换为指定的输出格式,输出格式在DMA2D输出像素格式转换器配置寄存器 (OPFCCR)的CFMT [2:0]字段中定义。

6、DMA2D输出FIFO

输出FIFO根据输出PFC中定义的颜色格式对像素进行编程。

通过如下一组寄存器定义目标区域:

 · DMA2D输出存储器地址寄存器 (OMAR)                     

 · DMA2D输出偏移寄存器 (OOR)

 · DMA2D行数寄存器(行数和每行像素数)(NLR)

如果DMA2D在寄存器到存储器模式下工作,则配置的输出矩形将以DMA2D输出颜色寄存器 (OCOLOR)中指定的颜色填充。

7、DMA2D配置

DMA2D可在以下四种模式下工作,通过CR寄存器的MODE[1:0]位选择工作模式:

 · 寄存器到存储器                    

 · 存储器到存储器

 · 存储器到存储器并执行PFC

 · 存储器到存储器并执行PFC和混合

寄存器到存储器

寄存器到存储器模式用于以预定义颜色填充用户自定义区域。颜色格式在OPFCCR中设置。

DMA2D不从任何源获取数据。它只将OCOLOR寄存器中定义的颜色写入通过OMAR 寻址以及NLR和OOR定义的区域。

存储器到存储器

在存储器到存储器模式下,DMA2D不执行任何图形数据转换。前景层输入FIFO充当缓冲区,数据从FGMAR中定义的源存储单元传输到OMAR寻址的目标存储单元。

FGPFCCR寄存器的CFMT [3:0]位中编程的颜色模式决定输入和输出的每像素位数。

对于要传输的区域大小,源区域大小由NLR和FGOR寄存器定义,目标区域大小则由 NLR和OOR寄存器定义。

存储器到存储器并执行PFC

此模式下,DMA2D对源数据执行像素格式转换并将结果存储在目标存储单元。

对于要传输的区域大小,源区域大小由NLR和FGOR寄存器定义,目标区域大小则由 NLR和OOR寄存器定义。

从FGMAR寄存器定义的位置获取数据,并由前景层PFC进行处理。原始像素格式通过 FGPFCCR寄存器配置。

在颜色转换执行期间,可根据FGPFCCR寄存器中编程的值添加或更改alpha值。如果原始图像没有alpha通道,则会自动添加一个默认的alpha值0xFF以获得完全不透明的像素。

可根据FGPFCCR寄存器的AMODE [1:0]位修改alpha值: 

 · 保持不变                 

 · 替换为FGPFCCR寄存器的ALPHA[7:0]值中定义的值

 · 替换为原始值与FGPFCCR寄存器的ALPHA[7:0]值的乘积除以255所得商

结果得到的32位数据由OUT PFC编码成OPFCCR寄存器的CFMT [2:0]字段所指定的格式。数据经处理后,将写入OMAR寻址的目标存储单元。

DMA数据传输

此模式下,将在前景层FIFO和背景层FIFO(分别在FGMAR和BGMAR中定义)获取两个源图像。

必须按存储器到存储器模式中所述配置两个像素格式转换器。由于这两个像素格式转换器各自独立,因此其配置可以不同。在每个像素都通过相应的PFC转换为32位后,将根据上述公式进行混合:输出PFC将根据指定的输出格式对得到的32位像素值进行编码,并且编码数据将写入OMAR寻址的目标存储单元。

来源:华芯微特32位MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 39

01、基本概念介绍

LCDC模块用于实现MCU与外部LCD的对接,在MCU的控制下,将需要显示的数据传送到外部LCD接口显示。

一个基本嵌入式图形系统可简化为如图所示。

1.png

基本嵌入式图形系统由微控制器、帧缓冲器、显示控制器和显示屏组成。

• 微控制器对要在帧缓冲器中显示的图像进行计算,以组成图标或图像等图形基元。CPU通过运行图形库软件来执行此过程。该过程可以由图形库使用专用硬件(如DMA2D)来加速。帧缓冲器更新的频率越高,动画越流畅(动画每秒帧数)。

• 帧缓冲器是一个易失性存储器,用于存储要显示图像的像素数据。该存储区通常称为图形RAM(GRAM)。所需帧缓冲器大小取决于显示器的分辨率和色深。

– 双缓冲技术使用两个帧缓冲器,可以避免显示正在写入帧缓冲器的内容。

• 显示控制器持续“刷新”显示器,以每秒60次(60Hz)的速度将帧缓冲器内容传送到显示屏。显示控制器嵌入在MCU中。

• 显示屏由显示控制器来驱动,并负责显示图像(由像素矩阵组成)。

显示器特性为:

– 显示尺寸(分辨率):由显示像素数定义,表示为水平(像素数)×垂直(行数)。

– 色深:定义可以绘制像素的颜色数量。它以每像素位数(bpp)来表示。对于24 bpp的色深(也可以用RGB888表示),一个像素可以有16777216种颜色表示。

– 刷新率(以Hz为单位):显示面板每秒刷新的次数。因为刷新率较低时产生的视觉效果不佳,所以显示器每秒钟刷新60次(60 Hz)。

02、LCDC介绍

LCDC是AHB架构上的主设备,可以对内部和外部存储器进行读访问。LTDC有两个独立的层,每层都有自己的FIFO,从而使显示更加灵活。

 LTDC控制器以AHB总线速度自动从帧缓冲器提取图形数据。然后将图形数据存储在其中一个FIFO内部层中,随后驱动到显示器。

该系统架构使图形可以在没有任何CPU介入的情况下构建并绘制到屏幕上。LTDC从帧缓冲器中检索属于图像的数据,而DMA2D则准备下一张图像。

 在每个像素时钟上升沿或时钟下降沿,并在屏幕有效区域内,LCDC层从其FIFO中检索一个像素数据,将其转换为内部ARGB8888像素格式,并将其与背景和/或其他图层像素颜色进行混合。得到的像素以RGB888格式编码,然后被驱动到RGB接口中。像素便会显示到屏幕上。

2.png

为了驱动LCD-TFT显示器,LTDC利用简单的3.3V信号提供了多达28个信号,包括:

 • 像素时钟LCD_CLK信号用作LCD-TFT的数据有效信号。只有在LCD_CLK上升沿或下降沿才会显示该数据。

• 数据使能LCD_DE信号向LCD-TFT指示RGB总线中的数据是有效的,并且该数据必须被锁存才能绘制出来。

• LCD_HSYNC行同步信号管理水平线扫描,作为行显示选通。

• LCD_VSYNC帧同步信号管理垂直扫描,作为帧更新选通。

• 像素数据RGB888。可以对LTDC界面进行配置,使之输出多种色深。它最多可以使用24条数据线(RGB888)作为显示接口总线。

03、典型LCDC显示帧控制时序

3.png

LCDC外设允许用户连接任意显示器尺寸,总宽度可达1024像素,总高度可达1024行。图中说明了完全可编程的时序和分辨率。

4.png

图中各参数分别对应LCD_InitStructure结构体中各参数配置。

LCD_InitStructure LCD_initStruct;

LCD_initStruct.ClkDiv = 8;               //取值范围2--65
LCD_initStruct.Format = LCD_FMT_RGB888; 
// LCD_FMT_RGB565、LCD_FMT_RGB888、LCD_FMT_SRGB565、LCD_FMT_SRGB888
LCD_initStruct.HnPixel = LCD_HDOT;      // 水平方向像素个数,最大取值1024
LCD_initStruct.VnPixel = LCD_VDOT;      // 垂直方向像素个数,最大取值1024

LCD_initStruct.Hfp = 5;        // horizonal front porch,最大取值64
LCD_initStruct.Hbp = 40;       // horizonal back porch, 最大取值256
LCD_initStruct.Vfp = 8;        // vertical front porch, 最大取值64
LCD_initStruct.Vbp = 8;        // vertical back porch,  最大取值256
LCD_initStruct.HsyncWidth = 5; // HSYNC低电平持续几个DOTCLK,最大取值256,至少比Hbp少1
LCD_initStruct.VsyncWidth = 5; // VSYNC低电平持续几个行时间,最大取值256,至少比Vbp少1

LCD_initStruct.DataSource = (uint32_t)LCD_Buffer; // 显示数据地址
LCD_initStruct.Background = 0xFFFF;                // 背景颜色
LCD_initStruct.SampleEdge = LCD_SAMPLE_FALL;      // 屏幕在DOTCLK的哪个边沿采样数据:LCD_SAMPLE_RISE、LCD_SAMPLE_FALL
LCD_initStruct.IntEOTEn = 0;                       // 传输完成中断使能

LCD_Init(LCD, &LCD_initStruct);

04、两个可编程LCDC图层

LCDC有两层,每层都可以分别启用、禁用和配置。图层显示的顺序是固定的,始终是由下至上的。如果使能两个层,则层2为顶部显示窗口。

LCDC具有可配置的混合因数。混合始终使用alpha值来激活。混合顺序固定,即由下至上。如果使能了两层,首先第1层将与背景色混合,随后第2层与第1层和背景的混合颜色结果再次混合。

5.png

05、灵活的窗口位置和尺寸配置

图中各参数分别对应LCD_InitStructure结构体中各参数配置。

LCD_LayerInitStructure LCD_layerInitStruct;
LCD_layerInitStruct.Alpha = 0xFF;
LCD_layerInitStruct.HStart = 0;
LCD_layerInitStruct.HStop = 127;
LCD_layerInitStruct.VStart = 0;
LCD_layerInitStruct.VStop = 127;
LCD_layerInitStruct.DataSource = (uint32_t)LCD_Buffer1;
LCD_LayerInit(LCD, LCD_LAYER_1, &LCD_layerInitStruct);

这样我们就把屏幕给驱动起来了。


来源:华芯微特32位MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 142

SWM341系列 86盒智能开关应用

华芯微特SWM341系列的SWM34SRET6,在86盒智能开关产品中的应用。

SWM34SRET6性能和UI的描述

SWM34SRET6是一款基于ARM Cortex-M33内核,最高主频可达150MHz时钟,提供内置512KB Flash,64KB SRAM,8MB SDRAM,具有RGB565或MPU I8080接口方式驱动TFT-LCD模组的LCDC模块,同时用于有丰富的接口可拓展,集显示和控制于一体的32位MCU。

针对86盒智能开关触摸屏产品,应用SWM34SRET6做了以下显示和控制

“SWM341系列之

显示采用4寸电容触摸,480x480分辨率的IPS TFT-LCD模组。采用RGB565接口驱动显示,通过PWM进行背光调节,I2C接口的电容式触摸控制。实现86盒产品的UI显示,平滑的触摸操控,可按照白天、黑夜或环境光线的变化自动调节显示亮度。

应用 GUI-Guider 上位机平台设计 UI 布局,快速自动生成代码,便于开发人员迅速上手。

“SWM341系列之

“SWM341系列之

拥有多钟扩展外设接口

USB 2.0接口可用于更新显示内容,可进行应用程序的升级;ADC 接口可监测环境亮度等模拟量以实现显示调节;CAN 总线可用于现场多种设备之间的通讯;GPIO 接口可用于控制设备供电的继电器或检测外部中断的变化;DAC 接口可实现语音的播报。

通过SPI 或 UART接口可搭载WIFI模块,实现云端数据的传输,获取天气、时间等数据进行语音播报;可通过语音识别功能进行操控;可传输WIFI模块中Camera 数据在TFT-LCD 模组上进行显示;可传输数据进行显示内容的更新等。

下图为SWM34SRET6与MT7933 WIFI模块的调试应用。MTK7933跟SWM341通过SPI接口相连。其中MTK7933作为SPI的master,SWM341作为slave,稳定通信时钟可达30Mbps。

“SWM341系列之

“SWM341系列之

“SWM341系列之
SWM341系列之 86盒智能开关应用

来源: 华芯微特32位MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 387

关于扫地机器人

众所周知,清洁是一项既费时又费力的工作,稍微长时间的清洁会使人感到腰酸背痛。在科技高速发展的今天,智能扫地机器人已大量投入市场,并得到越来越多家庭的认可。扫地机器人,顾名思义,可以扫地的机器人!目前市面上扫地机的品牌非常多,机器的功能也是多种多样,但最基础功能都是扫地和吸尘。行业痛点包括以下几个方面:

1、扫地机路线的规划不智能

部分机器人具有较好的扫地路线规划功能;但有些产品的清扫计划则杂乱无章,前者虽然扫地慢,但清洁方位全;对后者,除了清洁遗漏之外,很多使用者反馈,有些产品来回清扫一个地方,而对有垃圾的地方则熟视无睹。

2、障碍物绕行能力差

扫地机器人一般都植入了传感器以感知并绕开障碍物,但部分产品可能是传感器选择及算法不到位,被困后通过反复撞击来尝试出路,呈现的是一幅无序的弱智路线。

3、清洁能力参差不齐

清洁能力与产品的售价成正关系,但也有不少产品虽然价格居中,却有着不错的清洁效果。但整体而言,所有扫地机器人的清洁能力还是深受边角、床边等场景影响,无法对这些场景做很好的清理工作;另一方面,对粉尘类的清洁,无论是优质产品还是一般产品,都无法做到人工的效果。

4、非故意“伤害”

扫地机器人是按照程序运转,自我识别能力差,对规划路径范围内的物件,都被认定为垃圾,比如小巧的玩具、线缆等。

我们的SWM341在扫地机器人应用上MCU硬件可以完美匹配。

“SWM341系列扫地机主控板"

“SWM341系列扫地机主控板"
SWM341系列扫地机主控板

华芯微特SWM341系列MCU硬件可以完美匹配扫地机功能所需资源,SWM341 内核采用 ARM Cortex-M33 控制器,片上包含精度为 1%以内的 20MHz/40MHz 时钟,可通过 PLL 倍频到 150MHz 时钟,提供内置 Flash(512KB), SRAM(64KB),,此外还包括 1 个 32 位看门狗定时器, 5组32位加强型定时器, 12 组24位基础型定时器, 10 路独立通道 16 位的 PWM 发生器, 2 个共计20通道12位、 2.5MSPS的逐次逼近型 ADC 模块。外设串行总线包括多个UART接口、SPI 通信接口(支持主/从/I2S 模式选择)及 I2C接口(支持主/从选择)。支持LQFP64/LQPF100等多种不同封装选择,多路PWM支持单个芯片控制多个马达,为客户节省BOM成本。

SWM341系列MCU,多个技术亮点,可以为工程师解决行业痛点提供强有力保证:

1、具备高算力及高存储,有效保证处理实时性及数据存储

用户对房间进行建模,自定义房间大小数据,通过分析对路线进行最优化处理,然后将算法下载到扫地机上。SWM341具备浮点运算能力,可以提供高达150MHz主频,内置512KB Flash,34S系列还内置了8MB SDRAM,为客户提供高算力基础以及复杂智能算法的大数据存储基础。

2、具备丰富外设资源,单芯片提供整体解决方案

具备24路以上PWM,可以涵盖轮机控制,边刷、中扫、吸尘马达,以及各类信号发射及蜂鸣器等功能,20路ADC用于多项传感器监测,4个串口用于陀螺仪、超声、WIFI等模块通信。此外提供多个IO用于处理按键及显示部分。通过多传感器处理以及大容量数据存储,来优化对墙壁,台阶,电线等障碍物。

扫地机产品框图

“SWM341应用方案

来源:华芯微特32位MCU
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 99
订阅 RSS - SWM341