1.【聆思CSK6 视觉AI开发套件试用】头肩、统源手势识别体验与PWM舵机控制
2.PCA9685:I2C转16路PWM,统源助力你的统源系统
3.嵌入式系统设计实战:基于飞思卡尔S12X微控制器内容简介
4.时间触发嵌入式系统设计模式内容简介
5.Linux 内核:设备驱动模型——设备资源管理
【聆思CSK6 视觉AI开发套件试用】头肩、手势识别体验与PWM舵机控制
聆思科技与极术社区联合组织的统源CSK6视觉AI开发套件活动已让《酷电玩家》带来了深度的开发体验。本次分享针对AI识别应用与PWM舵机控制两大功能进行全面介绍,统源并通过步骤分解详述实现过程。统源织梦华美源码环境搭建
首先,统源通过官方文档指引,统源在环境搭建部分完成以下步骤:下载Git并安装,统源安装lisa zep工具以初始化CSK6 SDK开发环境,统源然后进行开发环境验证。统源获取源码
操作中使用Git获取Sample项目与SDK到本地环境,统源可自动完成初始化。统源AI案例体验
通过VSCODE打开项目结构,统源其中prj.conf文件是统源工程配置的关键。更改配置CONFIG_WEBUSB=n至CONFIG_WEBUSB=y,以便在后续测试阶段使用PC工具预览功能。接下来,完成固件编译与烧录,并通过USB接口烧录至CSK6开发板。安装与调试工具
工具预览使用Edge浏览器加载csk_view_finder_spd/src目录下index.html页面。完成Windows系统驱动安装,确保CSK6 USB端口能被系统识别。PWM舵机控制
对于引脚定义与设备树概念,开发者在.sdk\zephyr\dts文件中获取详细信息。选择适合的PWM通道与引脚(例如GPIOB , GPIOB 等),并在主程序中配置PWM控制与舵机驱动代码。初探kmalloc内核源码总结
上述步骤涵盖CSK6视觉AI开发套件的基本操作,从环境搭建、代码获取到AI应用体验与PWM舵机控制实现。结合头肩识别与坐标信息,进一步实现动态头肩跟踪功能成为可能。完整代码实现与进阶功能探索请参阅官方文档。PCA:I2C转路PWM,助力你的系统
PCA是一种主要用作I2C转路PWM的集成电路,适用于舵机控制、LED颜色控制等。其控制精度在Hz的控制频率下,脉宽为0.5ms~2.5ms,具备位分辨率(级),具体精度计算需参考相关资料。
PCA有两种封装形式:TSSOP与HVQFN,各有相应的引脚排列。每个引脚的功能描述如下图所示。引脚A0-A5共同决定器件地址,由于有6个引脚参与,因此可有个不同的器件地址。除了LED All Call address (E0h)和Software Reset address (h)外,实际可用地址为个,理论上,1个I2C接口可控制多达路PWM。器件地址的设置示意图如下图所示。默认情况下,知吗网源码若A0-A5全部接地,则器件地址为0x。
默认状态下,上电复位后,寄存器地址默认值为0,具体寄存器地址及其用途见下图。重点关注以下寄存器:模式设置寄存器、PWM通道寄存器与占空比设置、PWM周期(频率)寄存器与周期(频率)设置。
在使用模式设置寄存器时,需注意以下事项:首先介绍MODE1寄存器,其功能如下图所示。在配置模式时,特别关注MODE2寄存器的各位功能,如图所示。
PWM通道寄存器的设置如下图所示,每个通道有4个寄存器,每个寄存器图解如图所示。在设置PWM占空比时,首先配置舵机,例如ON < OFF情况。特殊情况下,PWM周期大于定时器一次计数时,配置ON>OFF情况。
配置PWM频率时,一般采用内置晶振,主力进场app源码频率为MHz。通过配置PRE_SCALE寄存器来调整频率,其与PWM频率的关系见下图。若使用内置晶振,取osc_clock=,update_rate=(舵机控制频率Hz)。
推荐硬件设计时,确保OE引脚接低电平以确保IC使能。若连接LED灯,则推荐连接方式如下图所示。
软件设计部分,Micro:bit平台采用TypeScript(JavaScript的超类)进行底层开发,提供基本操作方法及其思路。日后再更新C、C++及其它平台(STM、Linux树莓派、Arduino等)的操作方法。Micro:bit驱动PCA的源代码提供,注意源代码中的时间为us,与教程中的ms不同。
树莓派平台采用Python驱动PCA,首先安装Python和smbus库。Python代码如下所示,保存文件名为pca.py,命令行进入该文件所在的路径,运行该Python脚本。文件服务平台源码执行命令后,即可控制舵机从0度转到度,再从度转到0度。
嵌入式系统设计实战:基于飞思卡尔SX微控制器内容简介
本书《嵌入式系统设计实战:基于飞思卡尔SX微控制器》以飞思卡尔半导体公司出品的位SX系列MCU,MC9SXS为教学平台,深入讲解嵌入式系统的软件和硬件设计。全书共章,首先在第1章,系统地介绍了嵌入式系统的知识体系,指出了学习中可能遇到的误区,并给出了学习建议,为初学者铺设了清晰的学习路径。
第2章,作者详细构建了XS的硬件最小系统,同时对SXCPU(CPUX)进行了简要介绍,为后续开发打下坚实基础。紧接着的第3章,通过实例,展示了如何使用CodeWarrior工具进行工程组织,引导读者完成首个SX工程的入门实践。
第4章至第5章,内容更为深入,分别介绍了基于硬件构件的嵌入式系统开发方法,以及串行通信接口SCI,包括中断处理,这些章节涵盖了新MCU开发的基础要素。从第6章起,内容进一步拓展,包括GPIO的应用(如键盘、LED和LCD)、定时器(包括PWM)、SPI接口、Flash存储器在线编程、CAN总线、A/D转换,以及SXS的其他模块,全方位展示了微控制器的实用功能。
附录中提供了相关的参考资料,包括实例源代码、辅助资料、芯片详细信息以及常用软件工具。这些资源可在北航出版社下载中心或苏州大学飞思卡尔嵌入式系统研发中心网站获取。本书适用于大学高年级学生和研究生作为教材或参考读物,同时也为嵌入式系统开发和研究人员提供实用的参考资料,帮助他们提升技能和理论水平。
时间触发嵌入式系统设计模式内容简介
本书深入探讨了时间触发的嵌入式系统设计模式,主要针对那些运用一个或多个微控制器的嵌入式应用场景。它详细讲解了如何构建一个完整的调度操作系统,确保系统的高效运行和管理。
在用户界面的构建方面,书中提供了实用的指导,包括如何利用开关、键盘、LED显示和LCD等元件,设计出直观易用的操作界面,增强用户体验。
网络和通信协议的运用是现代嵌入式系统设计不可或缺的部分,本书会教你如何有效地集成和管理这些协议,以实现设备间的高效通信和数据交换。
在系统控制层面,本书特别介绍了PID算法在脉冲宽度调制(PWM)监控系统设计中的实际应用,帮助你理解和掌握精确控制技术。
本书的一大亮点是通过丰富的案例研究,展示了如何将这些设计模式应用于实际项目中,让你在实践中学习和掌握。附赠的CD中包含了所有模式和实例的C语言源代码,以及一个完整的调度器,方便你进行代码理解和调试。此外,你还将获得一个Keil C编译器的评估版本和硬件模拟器,无需额外购买,就能在本书提供的环境中测试你的项目。
Linux 内核:设备驱动模型——设备资源管理
在Linux内核中,驱动程序需要管理与特定设备实例交互时所需的私有数据结构。过去,驱动工程师通常使用kmalloc或kzalloc分配内存,但这可能导致初始化过程中可能出现的多种失败情况,需要驱动工程师小心编写代码来释放先前分配的内存。初始化过程中,驱动程序需要管理各种资源,包括IRQ编号、I/O内存映射、DMA等,这可能导致资源管理问题。
内核解决这个问题的方法是Devres(设备资源管理)模块。这个模块帮助驱动程序解决资源管理问题,使驱动程序只需申请资源而无需考虑释放,内核设备模型负责资源的释放。当设备与驱动程序分离时(即驱动程序移除时),内核自动释放设备的所有资源。
Devm_接口使得驱动程序可以使用,而无需担心资源释放。使用这些接口时,驱动程序可以忽略“devm_”的前缀,只需使用接口名称和一个struct device指针。这些新接口与旧接口参数一致,只是在名称前添加了“devm_”,并增加了一个struct device参数。保持接口兼容性,使新接口在不破坏现有驱动程序代码的情况下提供资源管理功能。
Devres接口包括资源申请和释放接口,例如devm_xxx接口。这些接口允许驱动程序申请资源,而无需考虑资源的释放。驱动程序只需使用devm_xxx接口申请资源,而内核负责释放资源。在驱动程序移除时,可以主动释放资源(也有相应的接口,但这里没有列出)。
资源管理是现代计算机体系结构的关键部分,为设备提供所需的外部条件,如供电、时钟等。Linux内核将资源抽象为设备资源(device resource),包括电源管理、时钟管理、中断管理、GPIO管理、PWM等。随着系统复杂度的增加,内核通过“device resource management”框架统一管理各种资源,包括分配和回收。
Linux内核中实现Devres的软件框架位于“drivers/base/devres.c”中,它提供了一个抽象层,用于组织和管理设备资源。框架由上层的框架(如clock、regulator、gpio等)实现,这些框架负责具体资源的抽象和管理。其他驱动程序则使用这些框架提供的机制和接口,实现资源管理功能。
设备原型中的devres_head是一个链表头,用于保存设备申请的所有资源。devres是一个抽象的数据结构,用于表示资源,它包含一个devres_node变量和一个数据数组。devres_node包含一个entry(用于插入链表)、一个release回调函数(用于资源释放)以及一个数据数组(用于存储资源的具体信息)。向上层框架提供接口,如devres_alloc和devres_free用于资源分配和释放。
Linux内核源码包含内存优化、文件系统、进程管理、设备驱动和网络协议栈的视频教程,这些教程可以帮助您学习和理解Linux内核的高级功能和实现细节。
通过Devres接口,驱动程序可以方便地申请设备资源,而无需担心资源释放问题。在使用完设备资源后,驱动程序可以通过调用devres_destroy接口或在设备与驱动分离时自动调用devres_release_all接口来释放资源。这些接口简化了资源管理过程,提高了驱动程序的可靠性和效率。