• CY8C42(1.PSoC4 Pioneer Kit开箱及基本使用)


    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.效果

    程序

    1. #include "project.h"
    2. #include "PWM.h"
    3. #include "RGB_R.h"
    4. #include "PWM_TC.h"
    5. CY_ISR(TC_ISR_Handler)
    6. {
    7. /* Interrupt is cleared */
    8. PWM_ClearInterrupt(PWM_INTR_MASK_TC);
    9. }
    10. int main(void)
    11. {
    12. /* Enable global interrupts. */
    13. CyGlobalIntEnable;
    14. /* Enable interrupt component and set up handler */
    15. PWM_TC_StartEx(TC_ISR_Handler);
    16. /* Start the PWM Component */
    17. PWM_Start();
    18. while(1)
    19. {
    20. }
    21. }
    22. /* [] END OF FILE */

    原理图

    实物

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

    9.小结

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

    这就是官方给出的教程

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

  • 相关阅读:
    TypeScript DOM类型的声明
    《Linux驱动:register_chrdev、alloc_chrdev_region、register_chrdev_region》
    会话技术(cookie、Session)及MVC开发模式
    Apache Dubbo的主要项目模块
    【已解决】Nacos配置出现错误:Error creating bean with name‘memoryMonitor‘
    VM安装Windows虚拟机
    IDEA最实用的设置
    Linux真的很难吗?文末送5本《Linux运维之道(第3版)》
    【Python_Process_Thread】Processing_Threading
    javaee 云借阅图书管理系统
  • 原文地址:https://blog.csdn.net/weixin_51686526/article/details/136374348