蓝牙开发零门槛之十四-Cube

sdk 新工具 cube 是一个图形化的初始化代码生成器,可为桃芯各种芯片型号生成 c 代码。
关键特性
这是一个交互式工具,辅助开发者正确配置芯片。各种特性总结如下:
支持各种芯片型号以最直观的方式完成外设和时钟树配置丰富、易用的图形界面 启发式、交互式设计无需文档,使用方法一目了然自动检查,减少错误管脚冲突参数范围低调生成的代码汇总于一个文件由开发者决定是否使用它生成的代码不会搞乱开发者的工程设置极快的运行速度所有的检查都是实时进行对于运行环境要求低与其它基于 eclipse 的工具相比,效率不可同日而语生成的代码更高效对于某些外设直接输出“计算”后的代码比调用驱动程序代码更短、速度更快在 wizard 里右键单击一个项目,从快捷菜单中选择“edit with cube…”即可打开 cube。cube 生成的代码保存在项目里的 /data/setup_soc.cgen 文件内,cube 本身的数据保存在 /data/cube_series.dat 文件内,这里 series 为芯片系列。
要使用 cube 生成的代码,只需 3 步:
在 main.c 里包含 ../data/setup_soc.cgen;
这行代码需要在 #include ingsoc.h 之后。在 setup_peripheral 函数里调用 cube_setup_peripherals()在 app_main 函数的开头调用 cube_soc_init()下面通过几个具体的场景介绍 cube 的使用:
使用场景 1. 硬件工程师设计天线阵
比如现在要用 ing91880c 设计一块天线阵,天线开关连哪个 io 脚?新建一个 ing9188xx 的工程,打开 cube,将型号选为 ing91880c,点击 antenna,再点击菜单 configure,弹出天线开关编辑窗口。点击 enable all,可以用做天线开关的 io 脚一目了然:
使用场景 2. 硬件工程师设计led指示灯
比如现在要用 ing91680a 设计一个产品,其中用到 led 指示灯,打算使用 pwm 控制闪烁。可以使用哪个 io 脚?新建一个 ing9168xx 的工程,打开 cube,将型号选为 ing91680a,点击 pwm,再点击菜单 configure,弹出 pwm 编辑窗口。马上就可以直观检查哪些管脚可用作pwm 输出:
假设硬件工程师选定使用 io 16 控制 led 灯,通知软件工程师。
使用场景 3.软件工程师实现 led 灯的 pwm 控制
软件工程师继续使用 cube 编辑 pwm。假设软件工程师要使 led 的初始状态为 1 秒闪烁一次,占用比 50%。在 easy 标签下,分别输入频率 1hz,占空比 50%,—— 输入数据时回车生效。这时,从验证窗口内马上可以看到存在两处错误:pwm 的 pera、high 两个数据都超出范围了, 它们最多支持 20 个比特,即最大为 0xfffff。
由于 pwm 分频比例有限,如果降低 pwm 的工作频率,就能获得更低频的输出。切换到时钟树页面,我们发现 pwm 有两种时钟可选:一为从 slow clk 分频,一为使用 clk 32k。让我们直接使用 clk 32k。
回到 pwm 编辑窗口 channel 0 的 easy 标签,这时,验证窗口提示一切正常:
编译下载程序,连接必要的硬件,即可看到 led 灯在按要求闪烁。
打开 setup_soc.cgen 文件,可看到最末尾几行的内容为:
// dump pinctrl registersapb_pinctrl- >out_ctrl[4] = 0x00001522; // 0x00001547这是 cube 对 pinctrl_setpadmux(16, io_source_pwm0_a) 做了“计算”后得出的结果, 显然比在芯片里执行 pinctrl_setpadmux(16, io_source_pwm0_a) 效率更高。这对于 ing916xx 系列为重要:因为 pinctrl 配置需要查一张复杂的表格,(https://github.com/ingchips/ing918xx_sdk_source/blob/07ffc140a28b86dfeda95cc9ea1f560e2b5adeae/src/fwlib/peripheral_pinctrl.c#l265)每次睡眠醒来都需要重新配置, 所以使用 cube 既可以减小程序体积,对于降低功耗也有一定好处。
使用场景 4.软件工程师借助 timer 实现 led 灯的 pwm 控制
由于某些原因,pwm 模块另有它用,软件工程师决定改用硬件定时器输出 pwm 波形控制 led 灯。查阅 pinctrl 模块的文档可知, 万幸 ,io 16 可用于硬件定时器 pwm 波形的 a 路输出。
选用 timer2 的 channel 0 输出 pwm 信号,从编辑窗口发现计数器长度仅用 16 比特,切换到时钟树窗口, 将 timer2 的时钟切换为 32k。这样,两个计数数各配为 16000 就可以输出 1 秒为周期,占空比 50% 的 pwm 波形了:
这个编辑窗口还出现了一个“陌生”的 “park value”,将鼠标移动到 “?” 上可以了解其功能。编译下载程序,即可看到 led 灯在按要求闪烁。
文章来源 桃芯科技

某科技有限公司101厂房光伏监控系统的应用分析
二甲苯储罐渗漏原因及修复方法
共源级放大器用电阻负载和有源负载的区别是什么?
旗下友尚集团力推Samsung 第四代通讯手机方案
LED电源厂商转战普通照明市场
蓝牙开发零门槛之十四-Cube
“AI媒婆”上岗,既要劝婚也要劝学
什么是电子级多晶硅?我国为什么要如此重视
热敏电阻NTC与PTC的多功能应用,向高端工业与汽车挖掘更多应用空间
传统企业在转型升级到智能制造的三大切入点介绍
工业智能网关助力数据采集打造家居建材MES系统
使用PLD内部锁相环解决系统设计难题
LG旗下首款采用Micro LED技术的商业电视LG Magnit正式面世
Elster煤气表和电表选用ADI智能计量解决方案
机器人越来越专业了,当明星有看头,当英雄有实力
重磅!雅特力发布全新超值型AT32F423系列MCU,以高性价比抢攻高性能应用市场
高/低功率各不相同,射频电路电源管理这门学问你真的懂么?
如果在Zephyr内如何使用ESP32蓝牙
安全驾驶,有C-V2X为我们保驾护航
5G毫米波惊艳亮相,张江企业积蓄动能