kjsm

  • 2024-08-08
  • 回复了主题帖: >>征集 | 使用 MCU,哪些问题最令你头大?

    在使用(MCU)进行项目开发时,以下是一些我总结令人头疼的问题:       1/硬件兼容性和稳定性问题: 不同批次的MCU之间可能存在微小的差异,这可能导致在某些硬件上工作正常的代码在另一批次的MCU上无法正常工作。 MCU的稳定性问题;MCU产品的成熟性;样品没问题到量产时出现偏差过大,能否量产问题 2/电源管理: 低功耗设计是许多嵌入式应用的关键,但正确管理MCU的电源状态(如睡眠、唤醒、低功耗模式等)往往很复杂,并且容易出错。 供电电压的波动和噪声也可能对MCU的稳定性和性能产生负面影响。 抗干扰能力不够担心MCU突然失效,程序跑飞。 3/调试困难: 由于MCU的运行环境和PC机截然不同,调试过程可能相当复杂,特别是在没有适当的调试工具或调试接口的情况下。 实时系统的问题可能难以复现,增加了调试的难度。 能有好的调试工具就能快速找到软件问题 4/电磁兼容性(EMC)和电磁干扰(EMI):  在嵌入式系统中,EMC和EMI问题可能导致设备性能下降或完全失效。这些问题可能由多种因素引起,包括电路设计、PCB布局、电源质量等 5/资料例程是否完善 在嵌入式系统中,快速的上手也是MCU考虑的一方面;资料和例程的齐全,说明文档的存在,能够让工程师快速的熟悉一款新的MCU;加速产品的开发进度。 例程的注解能够更方便的了解例程的功能和外设的使用

  • 2024-02-27
  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 移植FreeRTOS系统

    本帖最后由 kjsm 于 2024-2-27 14:45 编辑 FreeRTOS简介         FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。 其功能特点如下: (1)用户可配置内核功能( 可裁剪 ) (2)多平台的支持 (3)提供一个高层次的信任代码的完整性 (4)目标代码小,简单易用 (5)遵循MISRA-C 标准的编程规范 (6)强大的执行跟踪功能 (7)堆栈溢出检测 (8)没有限制的任务数量 (9)没有限制的任务优先级 (10)多个任务可以分配相同的优先权队列,二进制信号量,计数信号灯和递归通信和同步的任务 (11)优先级继承 (12) 免费开源的源代码 我参考了复旦微的FM33LG0XX的FreeRTOS例程。 例程地址:https://www.fmdevelopers.com.cn/forum.php?mod=viewthread&tid=1749 将例程的FreeROTS文件拷贝到自己的工程里 添加头文件支持 在头文件中找到FreeRTOSConfig.h文件,将其复制过来; 在FreeRTOSConfig.h中把时钟改成单片机的时钟;否则task时间会不对; 在主函数上添加头文件和两个Task的任务优先级 添加两个TASK任务,PC1每1 s 翻转一次; PC3每3 s翻转一次 初始化IO做为输出 创建一个Task任务: xTaskCreate(Led1Task,"Led1",configMINIMAL_STACK_SIZE,NULL, TASK_LED1_PRIORITY, NULL);//创建任务函数 vTaskStartScheduler();//任务调度器开启函数 把PC1和PC3接入示波器可以看到了程序正常运行了;PC1每1 s 翻转一次; PC3每3 s翻转一次 附件程序:

  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 硬件SPI驱动LCD屏幕

    本帖最后由 kjsm 于 2024-2-27 14:49 编辑 接上一篇点亮LCD屏幕后,发现使用IO口模拟SPI模式;在LCD的屏幕更新是相对较慢的。复旦微的FD33FT0A是支持使用内置硬件的SPI,所以使用硬件的SPI大大提高SPI的写入速度。屏幕更新的速度也比IO口模拟的更快; FT33FT0A的参考规格书内部SPI模块图;对于屏幕显示暂时不需要读取;所以主要是SPI-MOSI 和SPI-SCK两个引脚;进行SPI操作。 规格书上对于SPI的描述: 初始化中初始化SPI0,屏幕是单片机发送数据到LCD,SPI主要使用了主机模式发送数据给屏幕 通过硬件SPI写一个字节数据,通过busy标志位看发送是否完成 结合之前的屏幕程序,可以将屏幕的程序进行移植; 附上一个SPI刷屏的小视频: [localvideo]80e5d757263aa3ca4a5f61c195127e26[/localvideo]  

  • 2024-02-23
  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 点亮LCD屏幕

    开发板上附带了一块LCD屏幕;现在移植程序点亮LCD屏幕 硬件上查看原理图有相对应得IO引脚如下 总结硬件对应关系: SCL    PE0        SPI的时钟线 SDA   PB14      SPI的数据线 RES   PB15      LCD复位 DC     PE2          LCD数据/命令选择引脚 CS     PE1          LCD显示屏片选信号,低电平有效 BLK   PB9        背光控制开关 屏幕是1.47 172X320的彩色LCD,控制芯片是ST7789v3; 认识SPI 目前是使用IO 口模拟SPI 方式点亮屏幕 配置I/O 模拟SPI写一个字节数据 初始化LCD void LCD_Init(void) { LCD_GPIO_Init();//初始化GPIO LCD_RES_Clr();//复位 FL_DelayMs(30); LCD_RES_Set(); FL_DelayMs(100); LCD_BLK_Set();//打开背光 FL_DelayMs(100); // LCD_WR_REG(0x11); LCD_WR_REG(0x36); if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x00); else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC0); else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x70); else LCD_WR_DATA8(0xA0); LCD_WR_REG(0x3A); LCD_WR_DATA8(0x05); LCD_WR_REG(0xB2); LCD_WR_DATA8(0x0C); LCD_WR_DATA8(0x0C); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x33); LCD_WR_REG(0xB7); LCD_WR_DATA8(0x35); LCD_WR_REG(0xBB); LCD_WR_DATA8(0x35); LCD_WR_REG(0xC0); LCD_WR_DATA8(0x2C); LCD_WR_REG(0xC2); LCD_WR_DATA8(0x01); LCD_WR_REG(0xC3); LCD_WR_DATA8(0x13); LCD_WR_REG(0xC4); LCD_WR_DATA8(0x20); LCD_WR_REG(0xC6); LCD_WR_DATA8(0x0F); LCD_WR_REG(0xD0); LCD_WR_DATA8(0xA4); LCD_WR_DATA8(0xA1); LCD_WR_REG(0xD6); LCD_WR_DATA8(0xA1); LCD_WR_REG(0xE0); LCD_WR_DATA8(0xF0); LCD_WR_DATA8(0x00); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x04); LCD_WR_DATA8(0x05); LCD_WR_DATA8(0x29); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x3E); LCD_WR_DATA8(0x38); LCD_WR_DATA8(0x12); LCD_WR_DATA8(0x12); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x30); LCD_WR_REG(0xE1); LCD_WR_DATA8(0xF0); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x0A); LCD_WR_DATA8(0x0D); LCD_WR_DATA8(0x0B); LCD_WR_DATA8(0x07); LCD_WR_DATA8(0x28); LCD_WR_DATA8(0x33); LCD_WR_DATA8(0x3E); LCD_WR_DATA8(0x36); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x14); LCD_WR_DATA8(0x29); LCD_WR_DATA8(0x32); LCD_WR_REG(0x21); LCD_WR_REG(0x11); FL_DelayMs(120); LCD_WR_REG(0x29); }   参照网上的进行屏幕代码的移植,成功点亮了屏幕;  

  • 2024-02-07
  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ ADC 的使用

    ADC 的使用 选用了ADC的慢速通道单端输入;板上连接了滑动电位器连接ADC_IN6 ADC转换时序 ADC的输入通道 ADC单次转换全自动触发模式 1/配置ADC的时钟源、参考源选择VDDA 芯片的供电电源 2/配置GPIO口的ADC功能 3/获取ADC通道的值 如果使用VDDA作为基准时,为了采样更准确FM33FT0A还提供了内部的基准源,防止电源电压的变化而产生的采样偏差。 利用之前的UART4串口打印,可以在串口调试助手打印出ADC的采样值

  • 2024-02-05
  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 串口轮询使用

    串口轮询 UART4 的使用 目前FM33FT0A的UART是有6个通道的,也是第一次接触到支持这么多个通道串口的MCU;这里使用测试的是UART4通道。 通过查看数据手册,配置PB2/PB3为UART4的RX和TX引脚;使用的是引脚的复用的外设功能 初始化GPIO和配置UART4的波特率数据位校验位; 轮询发送数据测试 轮询读取获得的数据 FM33FT0A使用printf 函数 需要添加头文件#include "stdio.h" ;并添加重定向fputc 通过接收的数据可以联动之前的LED 可以进行串口控制LED开关

  • 2024-02-04
  • 回复了主题帖: 测评颁奖: 国产高性能运动控制MCU 先楫HPM5361

    非常感谢eeworld官方和先辑官方,我的奖品请于春节后发放 ,谢谢!!!可以在2月20日后发,再次谢谢

  • 2024-01-31
  • 回复了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 环境搭建

    Jacktang 发表于 2024-1-28 09:37 这个宽电源1.65-5.5V的硬件供电是怎么个电路供电的呢 目前板上是5v供电的

  • 2024-01-27
  • 发表了主题帖: 【复旦微车规MCU FM33FT0A 系列】+ 环境搭建

    本帖最后由 kjsm 于 2024-1-27 17:11 编辑 复旦微车规MCU FM33FT0A介绍: 配置FM33FT0A 的开发环境,官网上没有找到相关的开发资料,可以在复旦微的论坛下找到汽车MUC相关的资料下载 http://www.fmdevelopers.com.cn/forum.php?mod=viewthread&tid=14737 找到对应这次测评的FM33FT0A的芯片pack,安装支持KEIL的安装包 开发板的资源介绍: 开发板搭配的资源挺丰富的,有外接电源接口;板上DAP-link可以方便下载;还有显示的屏幕和触摸按键;以及通讯的接口2个CAN接口和1个LIN接口 环境安装好后,就可以点亮LED测试看看;测试是FT0xxA例程_FL_KEIL_V1.7.1.3里的闪灯示例 FM33FT开发板上的LED是RGB的LED 关于LED 的操作都在led.h 文件 GPIO口的定义,硬件接口定义 LED口的初始化及翻转 实验效果图  

  • 2024-01-19
  • 发表了主题帖: 【国产MCU先楫HPM5361】+ 电机初步运行视频

    本帖最后由 kjsm 于 2024-1-19 17:19 编辑 基于之前的PWM驱动,和先楫HPM5361例程bldc_square_wave;目前电机的电流采样未调通;本视频先记录下 [localvideo]e7067616de63a2b8c39fd51dfe7f62b7[/localvideo]  

  • 2024-01-16
  • 发表了主题帖: 【国产MCU先楫HPM5361】+ 互补PWM生成

    HPM5361的PWM 生成 PWM的全称是脉冲宽度调制,常用于设备控制,例如驱动电机,LED调光,无源蜂鸣器发声等等。 HPM5361硬件上PWM的引脚参考原理图是以下的引脚; 首先是初始化IO口配置成PWM输出 板上配置PWM的PWM0 ,时钟,PWM输出的通道 PWM的时钟是连接在AHB外设的频率160MHz,从规格书上查到 加载reload是PWM的周期时间,设置为20 Khz的载波周期时间是50us,其他PWM周期可以调整参数 我想配置输出PWM互补模式,带死区输出;参考了例子的 generate_central_aligned_waveform_in_pair】 对于PWM需要配置好STA起始寄存器,RLD重载寄存器,比较寄存器CMP,互补的配置,死区时间 具体的配置程序 PWM 互补占空比更新程序;配置CMP1,CMP2的值;CMP1~CMP2的差值是正占空比的大小。

  • 2024-01-12
  • 回复了主题帖: 测评入围名单:复旦微车规MCU FM33FT0A 系列

    个人信息无误,确认可以完成评测计划

  • 2023-12-13
  • 发表了主题帖: 【国产MCU先楫HPM5361】+ ADC读取

    今天来看看先楫HPM5361的ADC读取例程,先楫HPM5361的ADC是支持16位的模数转换的,精度比一般的MCU 12位/10位的ADC都要高;采样精度更高。 打开了HPM5361的ADC16的程序   程序实例包括了ADC的四种读取模式 /** @brief Define ADC16 conversion modes. */ typedef enum {     adc16_conv_mode_oneshot = 0,     单次转换     adc16_conv_mode_period,     adc16_conv_mode_sequence,     adc16_conv_mode_preemption } adc16_conversion_mode_t;   查看程序中使能的ADC口,可以在board.h里找到定义的ADC 口;这里使用的是ADC0.11;也可以自行修改。   ADC0.11在板子上是左边接口的ADC-A   程序默认输出是16位的数,为了直观点输出电压,我这里在第一种转换下修改了读取的处理,将读到的ADC值转化为电压值;   修改后通过串口的返回值就可以很直观的看到测试的电压值啦。      

  • 2023-11-30
  • 发表了主题帖: 【国产MCU先楫HPM5361】+开始使用IO翻转测试

    收到测评的国产MCU先楫HPM5361的demo板,设计得紧凑,支持的功能很多。   第一次接触RISC-V的内核的MCU,需要先安装支持RISC-V的内核的编译环境;官方推荐上推荐安装SEGGER Embedded studio for RISC的编译环境。 安装好编译环境就可以开始下一个程序试试了。例程在官方的sdk env_v1.30. 打开图形化start_gui.exe生成gpio 工程;需要选择驱动板的型号;需要生成的工程,还有生成工程文件的文件夹也是可以选择的。选择点生成就可以了。 因为 先楫HPM5361的主频高达480MHz;测试了下翻转一次IO口需要多久时间; 1/使用toggle_pin函数;这样翻转一次IO口在6.15MHz;测试代码:      2/直接操作寄存器翻转;这样翻转一次IO口在16.99MHz;直接快了一倍。测试代码:     以上就是IO口速度大致的测试了,先楫HPM5361的主频480MHz还是很强大的。  

最近访客

< 1/3 >

统计信息

已有41人来访过

  • 芯积分:73
  • 好友:--
  • 主题:10
  • 回复:5

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言