随笔分类 -  Embed/Mobile

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页

嵌入式, 移动设备
STC8H开发(十二): I2C驱动AT24C08,AT24C32系列EEPROM存储
摘要:AT24C系列是常见的EEPROM存储芯片, 常用于保存参数及掉电记忆的数据. 访问AT24C时I2C总线的频率不能太高, AT24C系列的I2C总线最高频率是400KHz(2.7V), 在1.8V时频率会降到100KHz, STC8H系列的主频基本上从24MHz起步, 甚至直接运行在36.864MHz上, I2C总线的频率是基于FOSC计算的, 在最初的调试阶段, 务必设置一个较大的预分频, 这样可以确保问题不出在频率过高上 阅读全文

posted @ 2022-07-04 05:55 Milton 阅读(2464) 评论(0) 推荐(0) 编辑

AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告
摘要:2022年6月初合宙新上市了 Air32F103 系列 MCU, AIR32F103 系列分 AIR32F103CBT6, AIR32F103CCT6, AIR32F103RPT6 三个型号, 分别是 32K RAM + 128K FLASH, 64K RAM + 256K FLASH, 96K RAM + 256K FLASH. 支持的最高主频216MHz, 可以Pin2Pin替换STM32F103的lqfp48封装, 可以换贴Bluepill开发板上. 开发板硬件贴票孔形式的PCB封装, 5x2双排针的设计便于当成各种Link使用. 本文介绍Windows下的环境配置 阅读全文

posted @ 2022-06-25 13:39 Milton 阅读(7578) 评论(0) 推荐(1) 编辑

合宙AIR105(四): SPI, MAX7219 8x8LED驱动
摘要:Air105的SPI介绍和驱动MAX7219的演示. Air105 包含五组普通SPI, 可以以半/全双工, 同步, 串行的方式通信. 可以被配置成主模式并为从设备提供时钟(SCK), 还能以多主配置方式工作. 支持协议Motorola Serial Peripheral Interface (SPI), Texas Instruments Serial Protocol (SSP), National Semiconductor Microwire * 包含硬件收发FIFO, 支持主或者从(主/从地址不同), 支持全双工, 半双工模式, 支持DMA 阅读全文

posted @ 2022-06-19 18:35 Milton 阅读(1082) 评论(0) 推荐(0) 编辑

合宙AIR105(三): 定时器, 定时器中断和PWM输出
摘要:Air105 有 1 个 Timer 单元,包含 8 个独立定时器: Timer0 到 Time7, 8 个定时器中断源独立,每个定时器单独占 1 个中断源, 使用 PCLK 时钟频率作为定时器计时钟源, 定时器采用向下计数方式. 每个 Timer 单元定时器都支持 PWM 模式, PWM 模式最高频率 PCLK/2, PWM 单次触发(one shot)功能, 用定时器控制板载LED闪烁, 以及呼吸灯效果示例代码. 阅读全文

posted @ 2022-06-18 21:01 Milton 阅读(1195) 评论(0) 推荐(1) 编辑

合宙AIR105(二): 时钟设置和延迟函数
摘要:Air105 的时钟 高频振荡源 * 芯片支持使用内部振荡源, 或使用外置12MHz晶体 * 芯片上电复位后 ROM boot 启动过程基于内部12MHz的振荡器 * 芯片内部集成的12MHz振荡源精度为±2%, 精度一般 * 使用外置12MHz晶体, 需要软件切换 * 经过PLL倍频后为系统提供输入 * 倍频后的PLL时钟频率可通过寄存器进行配置,可选频率为:108MHz, 120MHz, 132MHz, 144MHz, 156MHz, 168MHz, 180MHz, 192MHz, 204MHz 阅读全文

posted @ 2022-06-18 14:56 Milton 阅读(1151) 评论(2) 推荐(0) 编辑

DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试
摘要:以下说明当总线上存在多个 DS18B20 芯片时, 识别各个 DS18B20 的编号并进行通信的算法. 其实这是 1-Wire 总线的搜索算法, 当 1-Wire 总线上挂接了多个设备时, 总线控制端需要通过 ROM Search 命令来判断总线上存在的设备以及获取他们的8字节唯一ROM. 1-WIRE SEARCH ALGORITHM 算法规则和实现机制, ROM搜索算法的核心规则, 是在搜索中重复进行一个简单的三步操作 阅读全文

posted @ 2022-06-12 11:32 Milton 阅读(2659) 评论(3) 推荐(1) 编辑

DS18B20数字温度计 (二) 测温, ROM和CRC算法
摘要:DS18B20的核心功能就是数字化的温度读数, 可以设置为9, 10, 11, 12位分辨率, 缺省分辨率是12位. 各分辨率对应的读数, 温度分辨率分别是0.5, 0.25, 0.125, 0.0625摄氏度. 在执行温度转换命令Convert T`0x44`后, 温度会被转换并存储在一个2字节的内存单元, 然后通过读取命令Read Scratchpad`0xBE`读出. 无论是读取8字节ROM, 还是读取9字节暂存器, 最后一个字节都是前面所有字节的CRC校验值. CRC值的比较与是否继续操作完全由总线控制端决定, DS18B20 内部仅计算CRC, 并不会对CRC不匹配的情况进行处理, 需要总线控制端主动判断. 阅读全文

posted @ 2022-06-12 03:08 Milton 阅读(2278) 评论(2) 推荐(0) 编辑

STC8H开发(十一): GPIO单线驱动多个DS18B20数字温度计
摘要:DS18B20 是一个单线通信的数字温度计, 允许在一根总线上挂接多个 DS18B20 并分别通信, 在普通温度下, 可以直接从数据口取电, 这时候只需要两根连线. 供电电压兼容3.3V和5V, 温度检测范围[-55°C, +125°C]摄氏度, 在 [-10°C, +85°C] 精确率可以达到 ±0.5°C. DS18B20内部有9字节的暂存器和3个字节的EEPROM存储, 带一个8字节的唯一序列号. 文中会说明其8位CRC的计算方式, 以及单线总线上多个DS18B20的搜索算法. 阅读全文

posted @ 2022-06-04 22:59 Milton 阅读(1557) 评论(0) 推荐(0) 编辑

STC8H开发(十): SPI驱动Nokia5110 LCD(PCD8544)
摘要:STC8H开发(十): SPI驱动Nokia5110 LCD(PCD8544)有片很早以前买的Nokia5110 LCD一直在纸箱里吃灰. 可能是买其它配件时送的? 没有合适的用途一直扔在那里, 偶尔见到总会想什么时候有空给它点一下. 外观长这样. 其实市面上这种模块有几个不同的版本, 另一种版本是上下有两排排针, 方便不同的PCB布局, 功能是一样的. 单色LCD, 84x48像素, 带4颗蓝色LED灯珠作为背光. 显示芯片是Philips PCD8544. 因为是Nokia5110手机的显示屏, 所以一般都叫它Nokia5110 LCD. 在2014年大屏手机还没流行的年代, 这是个相当不错的显示输出设备, 相对于1602和2004LCD 阅读全文

posted @ 2022-06-03 12:12 Milton 阅读(1674) 评论(0) 推荐(0) 编辑

沁恒CH32V103C8T6(一): 核心板焊接和Windows开发环境配置
摘要:CH32V103C8T6是沁恒的RISC-V内核MCU, 基于RISC-V3A处理器, 内核采用2级流水线处理,设置了静态分支预测、指令预取机制,支持DMA. 需要准备一片 WCH-Link 用于烧录沁恒的芯片. 市面上有兼容 DAP-Link 和 WCH-Link 的烧录器. 注意看烧录器的说明, 其模式在加电前通过按键可以切换. 烧录 CH32V103 时, 必须处于 WCH-Link的状态. CH32V103C8T6 引脚布局与 STM32F103C8T6, CH32F103C8T6 完全一致, 硬件设计通用,PIN对PIN兼容, 所以可以直接使用 STM32F103C8T6 核心板(Bluepill)作为开发板. 手里正好有一片 STM32F103C6T6 的开发板, 电路和 STM32F103C8T6 是一样的, 只是芯片型号不同, 于是用热风焊将C6T6吹下来, 把 CH32V103C8T6 换上去. 阅读全文

posted @ 2022-05-08 11:26 Milton 阅读(1786) 评论(0) 推荐(0) 编辑

STM8S103F3P6 的开发, 烧录和Debug笔记
摘要:STM8S103F3P6 的开发, 烧录和Debug笔记STM8S103F3 产品手册, 接线 ST-LINK和开发板的SWIM口是一一对应的, 直接连到开发板的同名PIN, 开发工具库 SPL 第三方维护的 STM8S103F3_SPL 创建项目 打开 STVD 工具链: 选择STM8 Cosmic, 指定toolchains到对应的目录, 选择芯片型号, 例如对于 STM8S103F3P6 选择 STM8S103F3P, 然后点 Select 按钮, 会出现在下面的 Selected MCU 直接按 F7 检查是否能正确编译. The device is protected解决方法 在STVP软件中, 在"PROGRAM MEMORY"和"DATA MEMORY"界面用Ctrl+R读出数据, 提示"The device is protected" 阅读全文

posted @ 2022-04-30 11:49 Milton 阅读(2952) 评论(0) 推荐(0) 编辑

LibOpenCM3(五) 基础功能: 系统时钟, GPIO, 定时器
摘要:LibOpenCM3 提供了快捷方法用于初始化系统时钟, 方法所在文件lib/stm32/f1/rcc.c, 对应板载晶振为8MHz, 需要设置为72MHz系统频率的应用. 这个文件下还提供了其它的快捷方法, 在最新的版本中, 原来的方法还能调用, 但是已经被标为**Deprecated**了, 编译会产生warning提示. 需要改为下面的调用方式. GPIO的设置与SPL/HAL流程是一样的, 只是函数名和常量名有些区别. 不同MCU型号, 能使用的定时器编号不一样, 需要根据手册确定, 下面以TIM2为例说明定时器的设置流程. 阅读全文

posted @ 2022-02-24 11:56 Milton 阅读(828) 评论(0) 推荐(0) 编辑

LibOpenCM3(四) VSCode IDE 环境配置
摘要:如果用 PlatformIO 创建 libopencm3 项目可以做到零配置, 只是 libopencm3 的版本会旧一点. 这里说的是仅使用 VSCode 创建C/CPP项目时的配置. VSCode 有代码提示, 定位来源和各种快捷键, 更适合日常编码工作. 阅读全文

posted @ 2022-02-24 01:05 Milton 阅读(673) 评论(0) 推荐(0) 编辑

LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说明
摘要:要了解 libopencm3 的代码结构, 就需要先了解它编译产生的固件结构和启动顺序, 这部分和 CMSIS 是不一样的. 在 2020-11-29 的改动 drop all part specific ld files之前, 在 lib/stm32/f0 - f7 目录下, 可以看到各个型号的ld文件, 在这个提交中删除了所有具体型号的ld文件, 改为编译中使用脚本生成. 在用户的代码目录下可以看到生成的ld文件. 以下说明ld文件的功能和内容. 阅读全文

posted @ 2022-02-23 08:23 Milton 阅读(2344) 评论(3) 推荐(1) 编辑

LibOpenCM3(二) 项目模板 Makefile分析
摘要:LibOpenCM3 项目模板 Makefile 分析, 如果仅仅用IDE开发, 并不需要了解 Makefile 结构. 对于需要实现自动化发布和测试的项目, Makefile 几乎是默认的选项, 了解 Makefile 工作机制对项目长期的开发和维护都是很有帮助的. libopencm3 的 Makefile 用于将 libopencm3 编译生成链接库, 用户项目的 Makefile 用于引用 libopencm3 以及包含公用代码生成最终的 elf 和 bin, 以及生成 ld 文件. 阅读全文

posted @ 2022-02-21 23:37 Milton 阅读(698) 评论(0) 推荐(0) 编辑

LibOpenCM3(一) Linux下命令行开发环境配置
摘要:LibOpenCM3 是GPL协议(LGPL3)的Cortex-M系列的固件库, 支持stm32、atmel、nxp系列单片机. 这个固件库对标的是 CMSIS, 但是比 CMSIS 提供更多的方法接口, 实现度介于 CMSIS 和 SPL 之间. 对于常见的 STM32F1 系列, 代码已经基本稳定. 本文使用 Linux 环境, 硬件为 STM32F103 系列开发板. 导出 libopencm3 可以单独编译, 但是配置为完整的项目还需要添加用户代码和Makefile, 因为 LibOpenCM3 已经提供了立即可用的项目模板, 可以直接用模板提供的环境进行开发 阅读全文

posted @ 2022-02-21 10:23 Milton 阅读(1685) 评论(0) 推荐(1) 编辑

EmuELEC 4.3 安装和乐视手柄 LeWGP-201 evremap问题解决
摘要:一年多前安装了EmuELEC3.9之后, 就一直没有再更新过, 平时玩玩小游戏也很正常. 昨天心血来潮想把吃灰的乐视手柄用起来, 结果发现3.9里面没有evremap 命令. 猜测可能是这个版本的问题, 正好也很久没更新了, 不如新装一个4.3试试, 于是下了4.3的img, 把之前更早版本EmuE 阅读全文

posted @ 2022-02-19 12:48 Milton 阅读(2791) 评论(2) 推荐(0) 编辑

解决OpenOCD烧录STM32失败, 无法通过SWD连接的问题
摘要:如果在代码中, 不小心将 PA13,PA14 的 SWD 功能关闭, 或者在 STM32CubeMX 中忘记勾选 PA13/PA14 的串口调试功能, 都会导致后续烧录和连接失败, Linux下使用 OpenOCD 烧录 STM32, 出现了 Error: init mode failed (unable to connect to the target) 错误, 在网上搜到的大部分方案, 都是要到Windows下, 通过 ST-link utility 去重置擦除, 这里介绍一下 Linux 下的处理方法 阅读全文

posted @ 2022-02-14 23:19 Milton 阅读(4172) 评论(1) 推荐(1) 编辑

PlatformIO 创建 libopencm3 + FreeRTOS 项目
摘要:PlatformIO: libopencm3 + FreeRTOS 以下步骤基于常见的 Bluepill STM32F103C8T6, 也适用于其它 libopencm3 支持的MCU型号 方案一: 只复制需要的文件 在 PlatformIO 中, Board 选择 Bluepill F103C8, 阅读全文

posted @ 2022-02-13 22:09 Milton 阅读(581) 评论(0) 推荐(0) 编辑

STC8H开发(九): STC8H8K64U模拟USB HID外设
摘要:通用串行总线(Universal Serial Bus, 简称USB), 是当前使用最广泛的外设接口. 因为供电简单, 支持热插拔, 扩展端口简单, 传输方式多样化, 兼容性好, 支持的外设类型丰富, 基本成为PC标配. STC MCU从STC15开始支持USB ISP, 但是仅仅用于下载和调试, 可在代码中配置的USB外设功能直到STC8H8K64U才出现. USB标准规范包括USB1.0, USB1.1, USB2.0, USB3.0 以及2019年9月发布的 USB4TM, STC8H8K64U 支持的是 USB2.0 标准. 阅读全文

posted @ 2022-02-09 15:52 Milton 阅读(4027) 评论(0) 推荐(2) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页

导航