1.开箱

最近了解到赛普拉斯有一种芯片,属于PSoC系列,与传统MCU不同,有点类似跨界芯片,于是就买来玩玩了,老实说用完还是很特别的,因为我没有用过FPGA,不确定是不是FPGA的开发流程(有玩过FPGA的老哥可以说说)

那么为啥选择这一块板子呢?

首先是CY8C42有可编程模拟和数字模块,这是用这个芯片最核心的地方

还有就是好买啊,我在咸鱼上100能拿到手

这是实际的样子,还不错,挺新的

如果大家想看看PSOC4系列其他芯片的特点可以去这个网站,介绍的比较齐全

Cypress PSoC® 4微控制器芯片方案 - 产品亮点 - DigiKey得捷电子

2.安装IDE与创建工程

首先我们要去下载官方的软件Psoc creator,链接在下面

PSoC™ Creator - Infineon Technologies

然后就是下载安装一条龙,没啥好说的

然后我们找到软件双击打开

进到主界面后点击生成一个工程

在跳出来的窗口中选择连接的芯片,选择Psoc4再最后一个对话框中我们可以看到有非常多的4200系列,当选择一个芯片后我们可以在对话框的最上端看到芯片,我这里是4245芯片,大家看到合适的就行。

点击next后在下一个对话框里选择empty schematic

然后填入工工作区名称,路径,工程名称,之后点击finish

当我们进入到一个类似于空白的原理图就表示我们工程创建成功了,我这里是因为把周边的框都折叠起来了,所以比较空,第一次周边应该都是各种框。

3.导入官方例程

依然是创建新工程,并选择芯片

选择code example

然后就是官方的例程了,我们可以在filter输入我们要找的内容

比如最简单的led

点击next,这是你要导入的路径

点击finish,可以看到例程导入成功了

4.环境介绍

在开始前我们首先要对整个工程进行编译,在对话框的左上角可以找到

这是没有编译前的工程

这是编译后的工程

可以明显看到多出了非常多的东西,这些是我们使用芯片必不可少的东西,关于这些文件的用法,一会我来具体介绍

下图我所框出来的东西都是和硬件相关的,Psoc的使用并非完全由程序控制,反而是由硬件导向的,我们在写程序前必须要先配置相关硬件,再由IDE根据我们配置的硬件创建相关程序文件,我们的程序文件只是用来控制硬件何时开启的,这一点与传统的MCU非常不同

5.初始化

5.1管脚配置

首先我们先配置管脚,双击TopDesign(下面称为原理图)

然后我们在右侧器件对话框里搜索pin,因为我们是led输出,因此这里找到数字输出管脚

点击并拖拽到原理图空白位置

之后我们双击管脚进行配置

我们对管脚进行修改,修改名称,模式设置为上拉模式,并设置额外延展

点击OK,我们可以看到管脚修改成功了

然后我们找到左侧pins,双击进入

可以看到我们刚刚创建的管脚

但是此时还没有关联到实际的管脚,我们要映射到物理的管脚上

在开发板上,板载了一个RGB灯,原理图如下

这里我以P1.6介绍了,也就是红灯

我们在ide的右侧点击port,并选择P1.6

可以看到管脚已经映射上去了

我们重新回到原理图界面,可以看到,管脚已经改为1.6

5.2PWM模块

下一步我们PWM模块

在元器件框里搜索PWM

拖入原理图中

双击pwm模块来进行设置

我们先可以设置名称

然后我们对对PWM进行设置

点击PWM页面,进入下图界面

我们需要对下图的这些参数进行设置

此处的2000表示增加到2000就复位,1000就是PWM值,那么占空比也就是50%

点击OK完成设置

5.3时钟

我们的PWM需要时钟源,因此找到clock

拖到原理图上

双击clock设置频率

点击OK完成设置

5.4中断

在对话框中搜索interrupt,找中断

拖到原理图中

双击中断进行设置,我们只需要设置名称

原理图中也同步过来了

5.5连接原理图

连接线在左侧

按照下图连接

6.程序

在开始前我们要先编译一些工程,并生成对应的文件,这些根据我们刚刚设置的模块创建的,也是我们一会写程序根据。

双击左侧main.c打开程序

首先是添加头文件,比如这里我们模块的名称是pwm

假如我们在原理中将模块重新改名为AA,可以看到PWM消失了,取而代之的是AA,如果这时添加PWM头文件就会报错

下面我们将各类头文件添加进去

下面我们就可以开始写程序了

这里并没有什么固定的函数,因为所有函数都是根据你的硬件原理图而做出来的函数,大家在复杂项目里肯定不一样!!

我们看初始化,这一句是初始化中断

这个函数原型在PWM中断文件里(我这里是PWM_TC)

参数则是根据你写的来,保证这里一样就行,初始化的参数是根据中断服务函数来的,中断服务函数我一会介绍

然后是开启PWM

这个函数在PWM文件里(我这里是PWM.c)

最后我们来看中断服务函数,函数名是固定的,这是系统决定的(类似STM32)然后参数就是给初始化用的

之后就是清空PWM中断,在PWM文件里

这个函数的参数是固定的,是系统决定,无论你用什么都一样

 7.编译与下载

编译的时候我们总是能看到是编译其他工程

我们选择我们主要编译的工程,选择第一个工程,set it active,可以看到需要的工程加粗了

此时编译的就是我们要的工程了

编译完成后我们可以下载和仿真了

8.效果

程序

#include "project.h"
#include "PWM.h"
#include "RGB_R.h"
#include "PWM_TC.h"CY_ISR(TC_ISR_Handler)
{/* Interrupt is cleared */ PWM_ClearInterrupt(PWM_INTR_MASK_TC);
}int main(void)
{/* Enable global interrupts. */CyGlobalIntEnable; /* Enable interrupt component and set up handler */PWM_TC_StartEx(TC_ISR_Handler);/* Start the PWM Component */PWM_Start();while(1){}
}
/* [] END OF FILE */

原理图

实物

可以看到红灯按照既定程序闪烁了

9.小结

官方对于程序也给出了对应的教程,我们导入对应的工程后也能出现对应的PDF

这就是官方给出的教程

总的来说Psoc的开发与传统的MCU开发完全不是一个思路,可以说非常独特,强调的核心并非程序而是硬件,感觉非常类似FPGA了(吗?)我在网上完全搜不到这类的教程,后续我再看看可编程模拟与数字模块,来看看有何独特的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/719495.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/719495.shtml
英文地址,请注明出处:http://en.pswp.cn/news/719495.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样理解vue2和vue3里的双向数据绑定

在 Vue.js 中,双向数据绑定意味着当数据变化时,视图会自动更新;反之,当用户通过视图交互导致数据变化时,数据本身也会被更新。这种机制极大地简化了用户界面和数据之间的同步过程。 1. Vue2的实现 Vue2使用的是Objec…

MySQL的事务与隔离级别

1. 什么是事务? 数据库中的事务是指对数据库执行一批操作,而这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。这个时候就需要用到事务。 最经典的例子就是转账,你要给朋友小白转 1000 块钱&…

一代传奇宗庆后:把员工宠成上帝

作者:积溪 琥珀酒研社快评: 梅子真是哭了 一代传奇就此陨落 咱们又少了一个良心企业家 2月25日10时30分 娃哈哈集团创始人、董事长宗庆后 在杭州逝世,享年79岁 在过去一个多月的病危期间 他的病房里最显眼的 不是呼吸机、检测仪 而…

智慧城市中的公共服务创新:让城市生活更便捷

目录 一、引言 二、智慧城市公共服务创新的实践 1、智慧交通系统 2、智慧医疗服务 3、智慧教育系统 4、智慧能源管理 三、智慧城市公共服务创新的挑战 四、智慧城市公共服务创新的前景 五、结论 一、引言 随着信息技术的迅猛发展,智慧城市已成为现代城市发…

技术总结: PPT绘图

目录 写在前面参考文档技巧总结PPT中元素的连接立方体调整厚度调整图形中的文本3D 图片调整渐变中的颜色 写在前面 能绘制好一个好看的示意图非常重要, 在科研和工作中好的示意图能精准表达出自己的想法, 减少沟通的成本, 可视化的呈现也可以加强自身对系统的理解, 时间很久后…

分分钟搞定JSON解析

json 库能够解析字符串或文本中的 JSON 内容。 该库将 JSON 解析为 Python 字典或列表,也能将 Python 字典或列表转换为 JSON 字符串。 解析 JSON 如下的 JSON 格式的字符串: json_string {"first_name": "Guido", "last_na…

【Web】速谈FastJson反序列化中TemplatesImpl的利用

目录 简要原理分析 exp 前文:【Web】关于FastJson反序列化开始前的那些前置知识 简要原理分析 众所周知TemplatesImpl的利用链是这样的: TemplatesImpl#getOutputProperties() -> TemplatesImpl#newTransformer() -> TemplatesImpl#getTransl…

瑞芯微RK3588 C++部署Yolov8检测和分割模型

最近这一个月在研究国产瑞芯微板子上部署yolov8的检测和分割模型,踩了很多坑,记录一下部署的过程和遇到的一些问题: 1 环境搭建 需要的环境和代码主要包括: (1)rknn-toolkit2-1.5.2:工具链&am…

微服务day04-基于Feign的远程调用

一.Feign的认识 是http客户端,因为使用RestTemplate存在一些问题:代码可读性差,参数配置费事,不够优雅… String url"http://userservice/user/"order.getUserId(); User userrestTemplate.getForObject(url,User.cla…

01.23 校招 实习 内推 面经

绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、蔚来24届实习招聘特辑 | 软件&算法类(内推) 蔚来24届实习招聘特辑 | 软件&算法类(内推) 2、校招 | 普天科技2024校园招聘 校招…

初始计算机组成原理

1.初始计算机组成原理 本人相关文章:Linux之计算机概论 声明:大部分图片均来自网络,侵删 一个完整的计算机系统包括硬件子系统和软件子系统两大部分。 组成一台计算机的物理设备的总称叫做计算机硬件子系统,是看得见摸得着的实体,是计算机工…

华工的各类型PPT模板

华工的各类型PPT模板,包括原创的PPT及改良内容的PPT,适合科研/比赛/组会汇报等 前言各种毕业答辩夏令营答辩复试答辩奖学金答辩比赛/项目答辩组会汇报 前言 设计不易,排版不易,内容编排不易 待更新项目1 原创声明:不经…

【论文阅读】(2006)Dual-Optimal Inequalities for Stabilized Column Generation

文章目录 摘要一、介绍二、对偶最优不等式(Dual-Optimal Inequalities)三、确定P的最优原始解四、二元切割下料问题4.1 约束聚合4.2 相等约束4.3 计算结果 五、切割下料问题5.1 计算结果 六、三元组的深度对偶最优不等式(Deep Dual-Optimal I…

C/C++ 乘积尾零问题(蓝桥杯)

如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650,4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899…

代码随想录算法训练营第三十六天|435. 无重叠区间, 763.划分字母区间, 56. 合并区间

435. 无重叠区间 - LeetCode 思路: 本题是一个去除重叠区间的问题, 首先按照区间的 end_point 排序, 从第二个区间开始, 如果第二个区间和第一个区间有交集, 就要移除第二个区间。 因为容易证明之后的区间区间如果和…

做测试还是测试开发,选职业要慎重!

【软件测试面试突击班】2024吃透软件测试面试最全八股文攻略教程,一周学完让你面试通过率提高90%!(自动化测试) 突然发现好像挺多人想投测开和测试的,很多人面试的时候也会被问到这几个职位的区别,然后有测…

每日五道java面试题之mysql数据库篇(三)

目录: 第一题. 百万级别或以上的数据如何删除?第二题. 前缀索引第三题. 什么是最左前缀原则?什么是最左匹配原则?第四题. B树和B树的区别第五题. 使用B树和B树好处 第一题. 百万级别或以上的数据如何删除? 关于索引:…

【设计】设计一个web版的数据库管理平台后端精要

需求 springboot设计开发一个系统,在这个系统的数据库表中存放着2000个数据库实例,有MySQL、Oracle、sql server3种数据库类型,用户可以在页面上选择不同的实例,连接这些实例上的数据库,来执行业务sql 实现 Service…

光伏储能MPPT控制系统如何进行浪涌静电保护?

MPPT(Maximum Power Point Tracking)是太阳能电池板光伏发电系统中重要的一种控制技术。MPPT控制器能够实时侦测太阳能板的发电电压,并追踪最高电压电流值(VI),使系统以最大功率输出对蓄电池充电&#xff0…

06 - ip route和route -n的区别

1 ip route和route -n的区别 ip route 和 route -n 都是用于查看和管理Linux系统路由表的命令。但下面是它们的区别: ip route:是Linux系统中的现代工具,它属于iproute2套件;它提供了更多的选项,可以更精确地控制路由表…