本帖最后由 eew_4FmF97 于 2025-1-3 10:06 编辑
一直以来, PSOC4 MCU都是电容触摸MCU的最TOP选择, 高度可靠, 极其灵活的引脚映射, 抗扰鲁棒性都是硬件工程师的至爱 。现在,英飞凌全新一系列PSOC4100S MAX,该系列具有显着的增强功能,例如卓越的 384 KB 闪存容量以及对多达 84 个模拟和数字 GPIO 引脚的支持。该系列是第五代 CAPSENSE™ IP,即 MSC CAPSENSE,具有出色的性能和抗噪能力。
借助汽车 PSoC 4100S Max 系列,用户可以利用这些增强功能在其汽车设计中实现更加复杂的应用。MSC CAPSENSE IP 可确保提高感应精度和加快响应时间,使其成为需要可靠和精确触摸感应的应用的理想选择。
此外,汽车 PSoC 4100S Max 系列通过快速 I2C 或 CAN-FD 以及用于快速加密功能的专用加密块提供高速通信,扩展了汽车 PSoC 4 产品组合。无论用户需要先进的模拟和数字功能、扩展的闪存容量还是卓越的触摸感应,汽车 PSoC 4100S Max 系列都能提供全面的解决方案。
PSoC 4100S Max 先锋套件 (CY8CKIT-041S-MAX) 是一个低成本硬件平台,支持 PSoC 4100S Max 器件的设计和调试。第五代 CAPSENSE 基于多传感转换器 (MSC) 技术。PSoC 4100S Max pioneer 套件带有电容式感应接口,包括按钮、滑块、触摸板和接近传感器。使用先锋套件和 ModusToolbox™ 软件开始开发,这是一个现代而广泛的开发生态系统,支持各种 Infineon 微控制器,包括 PSoC 4100S Max 器件。ModusToolbox 软件作为开发工具、库和嵌入式运行时资产的集合,旨在提供灵活而全面的开发体验。
特性
- 从硬件层面优化的低功耗计算机和集成
- MCU 中的差异化触摸 HMI 功能
- 集成差异化模拟功能以支持电阻和电流感应
- Fast I2C 或 CAN-FD 高速通信
- 专用加密块,用于快速加密功能
- 32 位 MCU 子系统
- 带有 DMA 控制器的 48 MHz Arm® Cortex®-M0+ CPU
- 384 KB 闪存和 32 KB SRAM
- 带 PLL 的外部 MHz 振荡器 (ECO) 和 32 KHz 手表晶体振荡器 (WCO)
- 加密块包括 AES、TRNG、CRA、PRNG 和 SHA
- 可编程模拟块
- 1 个 12 位、1 Msps SAR ADC
- 两个运算放大器可配置为可编程增益放大器 (PGA)、比较器 (CMP) 等。
- 两个低功耗比较器 (CMP)
- 两个 MSC(多传感转换器)模块集成了第五代 CAPSENSE 和电感传感
- 可编程数字模块
- 两个 16 位定时器/计数器/脉宽调制器 (TCPWM) 模块
- 两个串行通信模块 (SCB),可配置为 I2C、SPI 或 UART
- 段码式 LCD
- I2S 音频输出
- 一个 CAN-FD(具有灵活数据速率的控制器局域网络)控制器
- 封装
- 48-QFN、64-TQFP 和 100-TQFP
- I/O 子系统
- 多达 84 个 GPIO,其中包括 24 个智能 I/O
编程环境IDE也从PSoC™ Creator升级到ModusToolbox™,下面,我使用官方的CY8CKIT-041S-MAX套件来体验这颗PSOC4100S MAX的CAN、I2C、ADC、电容触摸特性。
首先,简单介绍一下,从PSoC™ Creator过渡到ModusToolbox™,可以说是改变相当大,配置从图1位置改变为图2位置
图1 PSOC Creator4.4
图2 ModustoolBox 3.3
选择Device Configurator, 进入配置界面
- 配置系统时钟
因为CAN需要精确的时钟作为同步,MCU内置的时钟2%精度,不能满足CAN通信要求,所以,需要使用外部晶振,这里,我使用无源8MHZ晶振,
由于开发板上没有预焊晶振,需要自行增加晶振Y1, C13, C7, 并拆除R9, R10G两个电阻
点击ECO,在右边的参数窗口选择
选择PLL倍频至48MHZ
选择HFCLK,配置为ECO
- 配置CAN时钟
转到Peripheral-Clocks,新建一个16bit Devider,Source Clock选HFCLK,这里我选择目标频率4MHZ, 所以Divider选12,如下图所示:
- 转到Peripherals栏,找到Communication-Controller Area Network FD(CAN FD)0,按下面的参数选择,
- 填写RxCallback Function: CAN_RxCallback,
- Mode: 为与之前的系统CAN2.0B兼容,这里取消勾选CAN FD Mode
- Clock Signal选上一步设置的时钟,引脚选择,PSOC可以把CAN模块映射至多个引脚,这里为了方便连接,选择P6-1和P6-2,对应开发板的J4-6和J4-7
- Bitrate Setting和TX Buffer#0:与同一CAN网络其他节点设置相同的值
- 启用CAN中断
/* 填写中断参数 */
cy_stc_sysint_t canfd_irq_cfg =
{
/* Source of interrupt signal */
.intrSrc = CANFD_INTERRUPT,
/* Interrupt priority */
.intrPriority = 1U,
};
/* 挂载中断服务*/
(void) Cy_SysInt_Init(&canfd_irq_cfg, &isr_canfd);
/* 使能中断*/
NVIC_EnableIRQ(CANFD_INTERRUPT);
- 中断接收处理程序,注意函数名要与上面设置的相符
Void CAN_RxCallback(bool msg_valid,uint8_t msg_buf_fifo_num,cy_stc_canfd_rx_buffer_t* canfd_rx_buf)
{
uint8_t buf [CANFD_DLC];
uint32_t can_dlc;
uint32_t can_id;
if (true == msg_valid)
{
/* 判断是否数据帧 */
if(CY_CANFD_RTR_DATA_FRAME == canfd_rx_buf->r0_f->rtr)
{
//接收数据长度
can_dlc = canfd_rx_buf->r1_f->dlc;
//发送方CANID
can_id = canfd_rx_buf->r0_f->id;
//拷贝数据 memcpy(buf,canfd_rx_buf->data_area_f,canfd_dlc);
//处理数据
……
}
}
}
考虑到适应复杂的外部环境,这里外接带隔离的CAN通信芯片
总结:Infineon ModusToolbox还是比较容易上手的,但是CAN总线速率还是需要注意的,在配置里显示的速度都是整数的KBPS,如果其他节点是例如62.5KBPS,有出现帧错误的风险。好了,这期就先介绍到这里,感谢观看,欢迎指教。下一篇我介绍4100SMAX的I2C功能使用。