什么是模块化设计 FPGA/IC设计中根据模块层次的不同有两种基本的设计方法: 自下而上方法对设计进行逐次划分的过程是从基本单元出发的,设计树最末枝上的单元是已经设计好的基本单元,或者其他项目开发好的单元或者IP。该方法先对底层的功能块进行分析,然后使用这些模块来搭建规模更大的功能块,如此继续直至顶层模块。 自上而下的设计是从系统级开始,把系统分为基本单元,然后再把每个单元划分为下一层次
今天我们来手撕一个常见的笔试题:模3检测,使用的方法是三段式Moore状态机。 题目描述: 输入端口是串行的1bit数据,每个时钟周期进来一位新数据后,实时检查当前序列是否能整除3,若能则输出1,否则输出0。 例如,在4个时钟周期依次输入的数据为1、1、0、1。则有: T1:数据序列为1(10进制的1),不能为3整除,所以输出flag = 0; T2:数据序列为11(10进制
嵌入式开发–获取STM32产品系列和容量信息 获取STM32产品系列 有时候我们需要知道当前MCU是STM32的哪一个系列,这当然可以从外部丝印看出来,但是运行在内部的软件如何知道呢? ST为我们提供了一个接口,F1和G4系列地址统一为:0xE004 2000,需要以32位方式读取。 H7系列的地址是0x10006450 对于F1系列,该说明如下: 对于G4系列,说明如下:
引入:准备: STM32固件库包。 ST官方提供的STM32固件库包:STM32F10x_StdPeriph_Lib_V3.5.0(文件夹名)介绍: 文件夹含有:Libraries、Project、Utilities等文件夹。 Libraries文件夹含有:CMSIS、STM32F10x_StdPeriph_Driver(包含固件库核心的所有子文件夹和文件,建立工程时都会使用到)
一.简介 之前介绍过H桥电机驱动电路的基本原理,但是以集成的电机驱动芯片为示例。这些集成的芯片使用起来比较简单,但是只能适用于一些小电流电机,对于大电流的电机(比如:RS380和RS540电机),则不能使用这些集成的芯片(否则会导致芯片严重发热并烧毁)。 此时便需要自行用半桥/全桥驱动芯片和MOS管搭建合适的H桥电机驱动电路实现对大电流电机的驱动控制。 二.示例原理图和PCB展示 此原
内容列表 一、硬件连接 二、寄存器步骤 三、代码区 一、硬件连接 GPIO输出方式: 推挽输出 二、寄存器步骤 使能IO口时钟。配置寄存器RCC_APB2ENR。 参考手册---》6.3.7 APB2 外设时钟使能寄存器(RCC_APB2ENR) 也可直接到
一、 什么是SysTick? 这是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。(Systick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器。) 二、SysTick作用 在单任务引用程序中,因为其架构就决定了它执行任务
持续关注阿杰在线更新保姆式笔记~~坚持日更 参考资料《STM32F1开发指南-库函数版本》3.4小节和6.4小节《STM32中文参考手册V10》29章 内容列表 一、前言 二、调试原理 三、软件调试 四、硬件调试 一、前言 这一篇博客主要讲解STM32F1开发板如何进行调试,分别是硬件调试(STLINK)调试和软件调试。 二、调试原理 STM32的调试原理
持续关注阿杰在线更新保姆式笔记~~坚持日更 一、硬件连接 BEEP = 0;—->不响 BEEP = 1;—->响 二、库函数——步骤 使能IO口时钟。调用函数RCC_APB2PeriphColckCmd(); 不同的IO组,调用的时钟使能函数不一样。 初始化IO口模式。调用函数BEEP_Init(); 操作IO口,输出高低电平。 三、代码区
大家好,我是杂烩君。 越来越多的硬件产品,硬件构成不仅仅是集成在一块板子上,而是多块控制板协同工作。 此时,就会涉及到多块板之间的通信(有线/无线通信),就会涉及到到通信协议。很多时候,我们都会自定义一些协议。 我们之前在也分享一种常用的自定义协议格式: 分享一种灵活性很高的协议格式(附代码例子) 在多板系统中,会有以下这些应用场景: 每块板都有OTA升级的需求。 可能某块板
https://gitee.com/zhengnianli/EmbedSummary 我们的资料仓库下面之前有一位小伙伴留言: 杂烩君之前偶然间知道aardio这么一个工具,但没有实际去了解过。本期花点时间来了解、学习一下aardio,看看aardio是不是如这位朋友所说的这是一个不错的工具。 本期主角:aardio aardio属于易用性极强的动态语言,但也是一种混合语言
使用VScode编译betaflight固件—基于windows平台 1、使用git克隆betaflight的开源代码 2、betaflight的代码框架分析: 3、配置编译环境: 4、VScode上编译 betaflight不仅可以在LInux上进行编译也可以在Windows上编译,本文主要介绍在windows平台上使用VScode编译betafli
前言 大家好,我是杂烩君。本次来分享一些芯片相关的小科普文。作为嵌入式开发工程师,我们对芯片都需要有一定的了解。 指令集 1、指令集的体现 指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。 指令集也作为一种标准规范,用于规范芯片设计工程师及编译器开发工程师: 因为芯片与IDE都遵
betaflight github开源地址:https://github.com/betaflight/betaflight.gitBetaFlight是穿越机领域比较成熟的开源飞控,需要注意的是BetaFlight官网只是提供开源软件工程,用户需要根据这套程序,结合自己的硬件,自行修改相关驱动代码。本文主要是分析BetaFlight源码框架,然后基于这个框架做修改,生成自己硬件对应的程序固件。
概述 在用单片机驱动SPI设备时,需要两个特殊的寄存器配置位,分别是 CPOL (Clock POlarity)和 CPHA (Clock PHAse)。 CPOL配置SPI总线的极性 CPHA配置SPI总线的相位 下面从时序图入手,了解极性和相位。 SPI总线的极性 极性,会直接影响SPI总线空闲时的时钟信号是高电平还是低电平。 CPOL = 1:表示SCK空闲时是高电平 C
今天要在RTOS配置外部中断,为了省事,直接copy的裸机的外部中断例程,结果不能用,把可能出现的问题全部都查了一遍。首先FreeRTOS可管理优先级是5~15,这个注意到了,但是还是不行。是因为少了一个重要的参数。 先看裸机的中断结构体参数,这个和操作系统没有任何差别。然后我们再来看中断的配置 大家仔细看一下是不是少了一个参数。使能参数没有写,这是因为裸机默认使能,但是FreeRTO
STM32定时器 前言 最近想弄一个多路输出PWM,但是发现TIM2不能用,根据手册也对它进行重映射了,但是还是不能用,用示波器发现驱动能力比较弱,然后禁用jtag搞定了。 一、问题分析 重映射的参数在stm32底层文件可以看到 这里有写 GPIO_PinRemapConfig(GPIO_FullRemap_TIM2,ENABLE); //完全映射 1.不重映射时,默认
1、硬件准备 LinkIt 7697 _1,继电器模块_1,面包板_1,RGB LED灯_1(共阳极,工作电流20mA,红灯压降2~2.2V,绿灯蓝灯压降3~3.2V),限流电阻2个(一个150Ω,一个100Ω),两头针杜邦线若干,micro USB数据线一根,小号螺丝刀一套,万用表一台。 2、软件准备 1)安装arduino1.8.xxx版。 2)文件—>首选项—>附加开
写在前面 上一篇简要的介绍了CAN的基本知识,小米电机的通信协议,以及小米微电机驱动库的结构,本章将结合具体代码分析HAL库CAN通信流程。为什么使用F105呢?因为f105属于互联型,拥有两个CAN,分别是主CAN1和从CAN2,在使用can2时必须要开启can1的时钟,若can1和can2同时使用时,先初始化can1驱动,再初始化can2。做机器人电机比较多,双CAN板更合适一些。 前置任
创建ROS工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace 回到工作目录根空间使用catkin_make命令编译整个空间: cd ~/catkin_ws/ catkin_make 创建ROS功能包 进入工作空间,使用catkin_create_pkg命令创建功能包: cd ~/ca
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信