当前位置: 首页 > news >正文

【小黑嵌入式系统第七课】PSoC® 5LP 开发套件(CY8CKIT-050B )——PSoC® 5LP主芯片、I/O系统、GPIO控制LED流水灯的实现

上一课:
【小黑嵌入式系统第六课】嵌入式系统软件设计基础——C语言简述、程序涉及规范、多任务程序设计、状态机建模(FSM)、模块化设计、事件触发、时间触发


文章目录

    • 一、PSoC® 5LP主芯片
    • 二、PSoC 5LP I/O系统
      • (1) I/O系统特性
      • (2) I/O系统怎样运作?
        • 1、I/O驱动模式
        • 2、I/O端口配置寄存器
    • 三、GPIO控制LED流水灯的实现


在这里插入图片描述


一、PSoC® 5LP主芯片

  • PSoC 5LP 是真正的可编程嵌入式片上系统,在同一芯片中集成了自定义的模拟和数字外设功能、存储器以及 ARM Cortex-M3 CPU。
    • 带有工作频率高达 80 MHz 的 DMA 控制器、数字滤波处理器以及 32 位 ARM Cortex-M3 内核
    • 超低功耗与工业级最宽电压范围
    • 带有支持用户自定义的可编程数字和模拟外设
    • 任意模拟或数字外设向任意引脚灵活路由的功能

在这里插入图片描述


  • PSoC 5LP 带有一个丰富的功能集,包括:一个 CPU 和存储器子系统、一个数字子系统、一个模拟子系统以及全部系统资源。

在这里插入图片描述


  • 性能
    • 工作频率介于 DC 至 80 MHz 之间
    • 32 位 ARM Cortex-M3 CPU、32 个中断
    • 24 通道直接存储器访问(DMA)控制器
    • 24 位 64 抽头数字滤波处理器(DFB)

  • 存储器
    • 程序闪存的最大容量为 256 KB
    • 此外,还有多达 32 KB 的闪存空间,用于存储纠错码(ECC)
    • SRAM 空间达 64 KB
    • EEPROM 容量为 2 KB

  • 数字子系统
    • 4 个 16 位定时器、计数器和 PWM (TCPWM)模块
    • I2C,其总线速度为 1 Mbps
    • 获得认证的全速(FS)USB 2.0,其速率为12 Mpbs
    • 全速 CAN 2.0b 接口,16 个 Rx 缓冲区,8 个 Tx 缓冲区
    • 20 到 24 个 通用数字模块(UDB),通过配置 UDB 模块,可以创建有限数量的如下功能模块:
      • 8、16、24 和 32 位定时器、计数器和PWM
      • I2C、UART、SPI、I2S 和 LIN 2.0 接口
      • 循环冗余校验(CRC)
      • 伪随机序列(PRS)发生器
      • 正交解码器
      • 门限逻辑功能

  • 模拟子系统
    • 具有 8 至 20 位分辨率的可配置 Delta-Sigma模数转换器
    • 最多支持 两 个 12 位 SAR 模 数 转 换 器(ADC)
    • 四个 8 位数模转换器(DAC)
    • 四个比较器
    • 四个运算放大器(opamp)
    • 四个可编程模拟模块,用于创建:
      • 可编程增益放大器(PGA)
      • 互阻放大器(TIA)
      • 混频器
      • 采样和保持(S/H)电路
      • CapSense®支持,多达 62 个传感器
      • 1.024 V ± 0.1%内部参考电压

  • 多功能 I/O 系统
    • 46 至 72 个 I/O 引脚 — 多达 62 个通用 I/O(GPIO)
    • 多达 8 个特殊功能 I/O(SIO)引脚
      • 25 mA 灌电流
      • 可编程的输入/输出电压阈值
      • 可作为通用模拟电压比较器使用
      • 热交换功能和过压容限
    • 可用作 GPIO 的两个 USBIO引脚
    • 可从任意一个数字或模拟外设连接到任意的 GPIO
    • 任何 GPIO 都具有 LCD 直接驱动器功能,最多可驱动46 × 16 行
    • 任何 GPIO 均提供 CapSense 支持
    • 1.2 V 至 5.5 V 接口电压,多达 4 个电压域

  • 可编程时钟
    • 内部振荡器的频率范围为 3 至 74 MHz,在 3 MHz 频率时,精度为 1%
    • 外部晶振的频率范围为 4 至 25 MHz
    • 内部 PLL 能够生成高达 80 MHz 的时钟
    • 频率分别为 1 kHz、33 kHz 和 100 kHz 的低功耗内部振荡器
    • 外部时钟晶振的频率为 32.768 kHz
    • 可布线到任何外设或 I/O 的 12 个时钟分频器

二、PSoC 5LP I/O系统

(1) I/O系统特性

  • I/O系统为CPU内核和片内外设提供了连接到外部世界的接口。PSoC的I/O非常灵活,(总体上说)可以连接任意片内信号至任意引脚,从而大大简化了电路设计和电路板布局布线。

  • 每种PSoC器件均有两种类型的I/O引脚:通用I/O(GPIO)特殊I/O(SIO)。包含USB功能的器件还提供了第三类的引脚USBIO

  • GPIO和SIO提供了相似的数字功能,它们的主要区别在于模拟能力和驱动能力。包含USB功能的器件还提供了两个USBIO引脚,支持专门的USB功能和部分GPIO功能。

所有I/O引脚均可供CPU和片内数字外设用作数字输入、数字输出,并且所有I/O引脚都可产生中断。

所有GPIO引脚都可用作模拟输入、CapSense(电容感应)、LCD段驱动。

SIO引脚可被用于超过Vdda电压(器件的最高供电电压)值时的情况,以及用来产生可编程的输出电压,或设置可编程的输入阈值电压。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一个GPIO引脚的结构框图:
在这里插入图片描述
一个SIO引脚的结构框图:

在这里插入图片描述

一个USBIO引脚的结构框图:

在这里插入图片描述


(2) I/O系统怎样运作?

PSoC 的I/O系统提供以下功能:

  • 数字输入感测
  • 数字输出驱动
  • 引脚中断
  • 模拟输入、输出的连接
  • LCD段驱动、外部存储接口(EMIF)的连接
  • 存取片内外设:
    (1)用指定port的方式直接连接
    (2)通过通用数字块(UDB)经由数字系统互连(DSI)的方式连接

接下来后面主要介绍GPIO的基本运作方式

PSoC 5LP系列器件包含了46~72个I/O引脚,为了方便管理众多的I/O引脚,它们被组织成端口(port)的形式,每个端口最多包含8个引脚(pin)。

一些I/O引脚为多功能复用引脚(除通用功能外,还具有诸如USB、调试口、或石英晶体振荡器等特殊功能),其特殊功能通过相关的控制寄存器来使能,如通过设置石英晶体振荡器控制寄存器,可将该I/O引脚用作石英晶体振荡器功能。

在这里插入图片描述

具有多个名称的引脚为多功能复用引脚。

引脚名称中,诸如P1[2]的名称表示该引脚为端口1(port 1)中的2号引脚(pin2)。在PSoC中,一个端口最多包含8个引脚。


1、I/O驱动模式

I/O驱动模式是引脚的主要属性之一

每个GPIO或SIO引脚都可以被独立配置为8种驱动模式中的一种。

在这里插入图片描述

  • Out’信号由数据寄存器DR驱动(当引脚的“硬件连接”属性被禁用时),或由其它数字系统电路直接驱动。
  • In’信号驱动引脚状态寄存器PS,及其它数字系统电路。
  • An’信号连接到模拟系统电路中。
  1. 高阻模拟

为默认的复位状态,关闭所有的输出驱动器和数字输入缓冲器。这就避免了由于来自浮空的电压引起的流入数字输入缓冲器的电流。这个状态被推荐用于浮空或者支持模拟电压的引脚。

高阻模拟引脚连接到低噪声低干扰的专门布线路径,它不提供数字输入功能。

  1. 高阻数字

使能输入缓冲器用于数字信号输入。这是一个常用的高阻状态,推荐用于数字输入。

3.电阻上拉或电阻下拉

上拉或下拉各自在一个数据状态下提供串行电阻,并在另一数据状态下提供强驱动。该模式下,引脚能被用于数字输入/输出。这些模式常见于连接机械开关。

4.开漏、高驱动,开漏、低驱动

开漏模式引脚在一种数据状态下为高阻,在另一数据状态下提供强驱动。引脚能被用于数字输入/输出。
一个典型的应用是驱动I2C总线上的信号线。

5.强驱动

在高或低电平输出状态均提供强的CMOS输出驱动。这是引脚常用的输出模式。通常,强驱动模式引脚不得用作输入。这个模式通常用于驱动数字输出信号或者外部的FET。

6.电阻上拉和下拉

与电阻上拉或下拉模式类似,区别是总是存在串行电阻。在高输出状态是上拉,而在低输出状态是下拉。

该模式常用于其它可能引起短路的信号在驱动总线时。

如果I/O引脚选择旁路模式(缺省模式),则实际的I/O引脚上电压由端口数据寄存器(DR)值、引脚驱动模式、引脚所接负载共同决定。引脚电平状态可从端口状态寄存器(PS)中获得。

每个I/O引脚有三个驱动模式配置位(DM[2:0]),这些配置位位于一组PRTx_DM[2:0]寄存器中。 例如寄存器PRTx_DM2、 PRTx_DM1、 PRTx_DM0的各自bit y位,这3位用来设置portx的piny引脚(即Px[y]引脚)的驱动模式。

I/O引脚驱动模式

在这里插入图片描述


2、I/O端口配置寄存器

配置I/O引脚驱动模式,以及引脚的其它一些功能设置,可通过两种方式:

  • 端口配置寄存器 —— 对某端口的全部引脚进行配置
  • 引脚配置寄存器 —— 单独配置某一个端口的某一引脚

CPU可通过写端口数据寄存器(PRTx_DR)来让引脚输出高低电平(或高阻态);CPU通过读引脚状态寄存器(PRTx_PS)来获取引脚实际的电平状态。

端口配置寄存器:配置某端口的所有引脚,每种寄存器配置一个功能,各引脚功能设置可相同也可不相同。
在这里插入图片描述
表中所列的各寄存器均为一组寄存器。如PRT[0…11]_DR,表示有12个寄存器,分别为PRT0_DR ~ PRT11_DR,寄存器名中的数字表示端口号(即分别对应port0~port11的数据寄存器)。每个寄存器为8位,寄存器每个bit对应该端口的一个引脚,如PRT0_DR寄存器的bit0对应port0的pin0(即P0[0]引脚)。


PRT[0…11]_PRT配置寄存器(只写):
将某端口的所有引脚配置为相同模式,一次完成全部功能配置。

在这里插入图片描述

使用PRTx_PRT寄存器实现对port x的所有引脚的一次性相同配置


端口引脚配置寄存器(PRTx_PC0 ~ PRTx_PC7):用于访问单个I/O端口引脚的配置或状态位。下图给出了访问P3[2]引脚配置寄存器的结构图。

在这里插入图片描述
全部的端口引脚配置寄存器简化表示为PRT[0…14]_PC[0…7],最多包含15x8个寄存器。

寄存器名称前面的数字为端口号,后面的数字为引脚号,如寄存器PRT3_PC2为port3的pin2(即P3[2]引脚)引脚配置寄存器。


三、GPIO控制LED流水灯的实现

  • 方法1(参见示例项目LED_Marquee):用Creator组件库中的数字输出引脚组件绘制原理图,在项目的设计范围资源文件(.cydwr)中设置其与实际引脚的映射,用该组件的API函数来控制GPIO口的输出。

  • 方法2(参见示例项目LED_Marquee2):用Creator组件库中的cy_boot组件(该组件自动被包含进每个项目中,原理图中不显示),无需画原理图及设置引脚映射,直接用该组件的API函数来配置GPIO口及控制GPIO口的输出。

  • 方法3(参见示例项目LED_Marquee3):直接通过I/O系统相关的寄存器,来配置GPIO口及控制GPIO口的输出,无需画原理图及设置引脚映射。

建议使用方法1或方法2,尤其方法1。方法3只在要求很快的I/O操作速度时才需要。

补:延时的实现可利用cy_boot组件所提供的延时函数CyDelay()


关于GPIO控制LED流水灯的每个示例项目的阅读及运行:

(1)打开项目目录中的.cywrk文件;(项目路径中不能含有中文)

(2)而后查看项目的原理图TopDesign.cysch、项目的设计范围资源文件.cydwr、main.c、GPIO.h(仅对LED_Marquee3 示例项目);

(3)将程序下载至PSoC 5LP芯片中(USB线连接到板上的J1口),实际观察运行效果。

关于GPIO控制LED流水灯的示例项目的注意事项:

(1)注意示例项目中的注释;

(2)在运行程序前需先将CY8CKIT-050板上的LED1与P0[0]插孔用导线连接、将LED2与P0[1]连接;

(3)Creator自带的组件,均有组件数据手册(中文翻译版需到Cypress官网中搜索下载),里面有该组件的功能、各种配置、API函数等内容的详细说明。

在这里插入图片描述

(4)每个项目都会自动隐式地包含cy_boot组件,该组件提供了存取芯片资源的一种方式,提供了大量直接可用的API函数。所有示例项目均使用了cy_boot的一个API函数 —— 延时函数CyDelay(),示例项目2还使用了其引脚相关API函数。

cy_boot组件的手册获取方式:在这里插入图片描述

(5)PSoC 5LP器件内的所有寄存器的功能及使用说明,参见“PSoC 5LP寄存器技术参考手册”(PSoC 5LP Registers TRM)。

(6)源程序中有一些Creator自定义的数据类型,如main.c文件中的uint8类型,这些自定义数据类型的含义参见 System Reference Guides 。

相关文章:

【小黑嵌入式系统第七课】PSoC® 5LP 开发套件(CY8CKIT-050B )——PSoC® 5LP主芯片、I/O系统、GPIO控制LED流水灯的实现

上一课: 【小黑嵌入式系统第六课】嵌入式系统软件设计基础——C语言简述、程序涉及规范、多任务程序设计、状态机建模(FSM)、模块化设计、事件触发、时间触发 文章目录 一、PSoC 5LP主芯片二、PSoC 5LP I/O系统(1) I/O系统特性(2) I/O系统怎样运作?1、I/…...

深度学习简史

一、说明 为了学习好深度学习,有必要知道深度学习的整个成长历史,可以说,深度学习的发展历程伴随整个人工智能的成长历程,本文将介绍这个历程的关键性历史节点。 二、深度学习的旅程 2.1 深度学习的当前认知 深度学习是机器学习的…...

CSRF 和 XSS 是什么

在Web开发中,安全性是至关重要的。然而,随着网络攻击技术的不断演进,跨站请求伪造(CSRF)和跨站脚本攻击(XSS)成为了最常见和具有破坏力的网络安全威胁之一。本文将介绍CSRF和XSS的概念、原理以及…...

亚信科技发布“电信级”核心交易数据库AntDB7.0,助力政企“信”创未来!

昨日,亚信科技AntDB数据库 7.0产品线上发布会成功举办,数千位关注亚信科技、关注国产数据库,致力于推动数据库行业变革的专家、客户热情参与,并对发布会及产品给予高度评价。 新增两大技术特性 作为我国最早一批独立研发的通用型…...

硬件调试-电源纹波测量

硬件调试-电源纹波测量 Fang XS.1452512966qq.com如果有错误,希望被指出,学习技术的路难免会磕磕绊绊量的积累引起质的变化感谢酸奶大佬提供的硬件技术指导; 电源纹波 百度百科定义如下: 纹波是由于直流稳定电源的电压波动而造…...

【洛谷算法题】P5710-数的性质【入门2分支结构】

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5710-数的性质【入门2分支结构】🌏题目描述🌏输入格式&a…...

arcgis图上添加发光效果!

看完本文, 你可以不借助外部图片素材, 让你的图纸符号表达出你想要的光! 我们以之前的某个项目图纸为例,来介绍下让符号发光的技术! 第一步—底图整理 准备好栅格影像底图、行政边界的矢量数据,确保“数据合适、位置正确、边界吻合”。 确定好图纸的大小、出图比例、投…...

[MySQL]——SQL预编译、动态sql

键盘敲烂,年薪30万🌈 目录 一、SQL的预编译 📕一条SQL语句的执行过程 📕弊端 📕预编译SQL的优势 📕两种参数占位符 📕小结 二、动态SQL 📕概念介绍: &#x1f4…...

安装ifconfig命令(两步搞定)

如果你输入ifconfig显示没有这条命令,最可能的原因就是你在安装CentOS,先择的是最小安装模式,默认不安装ifconfig等命令, 解决办法:1. yum安装ifconfig这个命令包。命令:yum search ifconfig 2.通过yum …...

【蓝桥杯 第十届省赛Java B组】真题训练(A - H)H待更新

目录 A、组队 - 看图一眼出答案 B、不同子串 - 字符串模拟 set去重 C、数列求值 - 模拟取余 D、数的分解 - 三重暴力 E、迷宫 - bfs 判断路径 F、特别数的和 - 弱智模拟 G、外卖店优先级 - map 暴力(90%通过率) H、人物相关性分析 - A、组队 -…...

【牛客题】二进制求和 <模拟>

给定两个用字符串表示的二进制数,返回他们的和。 数据范围:字符串长度满足 1 ≤ n ≤ 1 0 5 10^5 105 ,字符串中只含有 0 和 1,且保证除 0 以外的二进制数没有前导零的情况。 示例输入: "101","1&qu…...

Error:Only idle or expired IP address can be disabled.

华为数通设备,在配置DHCP排除地址时可能会出现以下情况 Error:Only idle or expired IP address can be disabled. 这是因为地址已经被分配出去,所以现在无法进行排除 解决方法 1.先进入接口关闭DHCP [CE2-GigabitEthernet0/0/1]undo dhcp select g…...

Xubuntu16.04系统中create_ap开启5G网络的踩坑记录

Xubuntu16.04系统中安装create_ap创建无线AP: https://blog.csdn.net/qq_45445740/article/details/133972642?spm1001.2014.3001.5501 目录 1.create_ap.conf 配置文件解析2.关于信号强度和延时2.1 信号强度2.2 信号延时2.3 网络延时测试工具推荐——PingPlotter …...

8. 一文快速学懂常用工具——Linux命令(上)

本章讲解知识点 引言 指令学习 本专栏适合于软件开发刚入职的学生或人士,有一定的编程基础,帮助大家快速掌握工作中必会的工具和指令。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。如专栏内容有错漏,欢迎在评论区指…...

@RestController注解说明

在Spring框架中,RestController注解是一个非常重要的注解,它用于将一个类标记为RESTful风格的控制器。本文将详细介绍RestController注解的作用和用法,并提供示例以帮助读者更好地理解和使用它。 RestController的作用 RestController注解是…...

Excel中行列范围的转换

将 行&#xff1a;1,4-5,8,11 列&#xff1a;a,c-e,f 这种写法转换成单元格地址的方法。 public static Tuple<List<int>, List<string>> ConvertRowColumn(string rowRep, string colRep){List<int> rowIdxs new List<int>();rowRep rowRep.…...

golang的类型断言

前言&#xff1a;原因很简单&#xff0c;写的代码panic了。报错如下。为此专门看下golang的类型断言。 “[PANIC]interface conversion: interface {} is string, not float64”。 1、类型断言(assertion) 所谓“类型断言”即判断一个变量是不是某个类型的实例(简单来讲就是判…...

监听dom变化,监听dom属性变化

一、利用new MutationObserver const config {attributes: true, // 监听属性变化childList: true, // 监听子节点变subtree: true // 监听后代元素变化};jianting new MutationObserver(() > {this.changeFun()});jianting.observe(dom, config) /监听 jianting.disconne…...

mfc140u.dll丢失怎么修复,mfc140u.dll文件有什么作用

今天我想和大家分享的是关于mfc140u.dll文件丢失的解决方法。在我们使用电脑的过程中&#xff0c;有时候会遇到一些错误提示&#xff0c;其中比较常见的就是“无法找到mfc140u.dll文件”。那么&#xff0c;这个文件是什么呢&#xff1f;它有什么作用呢&#xff1f; 首先&#…...

关于MySql update语句不能用子查询的解决办法

关于MySql update语句不能用子查询的解决办法 使用MySql数据库语法操作update时&#xff0c;第一时间想到的是一下写法&#xff1a; UPDATE purchase_request_detail SET convert_to_voucher_id2, convert_to_voucher_typeinventory-voucher WHERE detail_id IN (select deta…...

mac 下安装Rust Toolchain(Nightly)

你可以用 Homebrew 安装 rustup&#xff0c;这是推荐的管理 Rust toolchain的 brew install rustup-init安装 Rust&#xff08;包含 rustup&#xff09; rustup-init安装过程中会让你选择安装那个&#xff0c;直接回车选择默认的即可 安装完成后&#xff0c;cargo, rustc, r…...

使用HTTPS进行传输加密

说明 日期&#xff1a;2025年5月30日 与以纯文本形式发送和接收消息的标准 HTTP 不同&#xff0c;HTTPS 使用SSL/TLS等协议对服务器进行身份验证、加密通信内容和检测篡改。 这样可以防止欺骗、中间人攻击和窃听等攻击。 证书很重要&#xff0c;如果用户主动信任了伪造证书&…...

设计模式——原型设计模式(创建型)

摘要 本文详细介绍了原型设计模式&#xff0c;这是一种创建型设计模式&#xff0c;通过复制现有对象&#xff08;原型&#xff09;来创建新对象&#xff0c;避免使用new关键字&#xff0c;可提高性能并简化对象创建逻辑。文章阐述了其优点&#xff0c;如提高性能、动态扩展和简…...

AI炼丹日志-26 - crawl4ai 专为 AI 打造的爬虫爬取库 上手指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇&#xff1a; MyBatis 更新完毕目前开始更新 Spring&#xff0c;一起深入浅出&#xff01; 大数据篇 300&#xff1a; Hadoop&…...

音视频中的复用器

&#x1f3ac; 什么是复用器&#xff08;Muxer&#xff09;&#xff1f; 复用器&#xff08;muxer&#xff09;是负责把音频、视频、字幕等多个媒体流打包&#xff08;封装&#xff09;成一个单一的文件格式的组件。 &#x1f4a1; 举个形象的例子&#xff1a; 假设你有两样东…...

使用k8s服务进行端口代理

创建registry-service.yaml 使用无Selector的Service Endpoints模式 vi registry-service.yaml编辑以下内容 apiVersion: v1 kind: Service metadata:name: registry-service spec:type: NodePortports:- name: httpprotocol: TCPport: 81 # Service内部端口targ…...

linux版本vmware修改ubuntu虚拟机为桥接模式

1、先打开linux版本vmware操作界面 2、设置虚拟路由编辑器的桥接模式 输入账号密码 自动模式 不需要进行任何操作 3、修改虚拟机设置网络模式为桥接模式 然后save保存一下配置 4、现在进入虚拟机查看ens33配置 网卡启动但是没有ip 5、自己进行设置修改ubuntu网络配置文件 cd …...

数控技术应用理实一体化平台VR实训系统

::产品概述:: 目前我国本科类院校学生普遍存在的问题就是缺少对实际工作的了解&#xff0c;一直在学习相关专业的理论知识&#xff0c;对社会的相关企业的用人情况不了解。这也就直接导致了毕业的学生和社会上的用人单位需求有点脱节&#xff0c;这也是由于我国的现行本科教育侧…...

DFS入门刷题c++

目录 821. 跳台阶 - AcWing题库 ​92. 递归实现指数型枚举 - AcWing题库 ​P1706 全排列问题 - 洛谷 (luogu.com.cn) P1157 组合的输出 - 洛谷 (luogu.com.cn) ​P1036 [NOIP 2002 普及组] 选数 - 洛谷 (luogu.com.cn) P2089 烤鸡 - 洛谷 (luogu.com.cn) P1088 [NOIP 2…...

react diff 算法

diff 算法作为 Virtual DOM 的加速器&#xff0c;其算法的改进优化是 React 整个界面渲染的基础和性能的保障&#xff0c;同时也是 React 源码中最神秘的&#xff0c;最不可思议的部分 diff 算法会帮助我们就算出 VirtualDOM 中真正变化的部分&#xff0c;并只针对该部分进行原…...