eew_4FmF97

  • 2025-01-06
  • 发表了主题帖: 英飞凌PSOC4100SMAX使用心得(ADC篇)

      上一篇介绍了I2C总线的使用,在这一篇我续写ADC使用,PSOC4100SMAX的ADC使用也是比较容易上手的, 配置ADC 配置时钟Peripheral-Clocks配置    Peripherals配置 Vref选择:PSOC的参考电压选择很灵活   这里简单介绍一下BandGap Reference,其原理是利用具有正温度系数的电压与具有负温度系数电压相结合的电路,抵消温度的影响,实现温漂很低的参考电压,PSOC4100S MAX的参考电压在1.188~1.212 V之间,典型值 1.2V,通常使用内置的参考电压已经能获得较好的性能,此外,还可以根据采样速率选择是否需要滤波电容,或外部VREF或1/2 VDDA,VDDA。 同时扫描的通道数量   注入通道   这个用于硬件偶尔扫描一个插入通道,这个通道不计算在通道数量里面 开启升压电路   当MCU供电电压低于2.7V时需勾选此项,而当MCU供电电压高于4.0V时,此选项失效   采样速率   阀值检测   这里可以设置不同的中断触发条件,设置这个窗口值,由ADC硬件进行数值比较,可以大幅减少MCU的参与处理时间,对高速率采样和低功耗时特别有用   采样设置   通道模式配置,单端或差分输入模式       平均值使能,阀值中断使能以及饱和中断使能   饱和中断使能后,如果该通道的采样值等于相应分辨率下转化结果的下限值或上限值时,使能该选项可触发饱和中断。例如 12 位分辨率下得到的转换结果为 0x000 或者 0xFFF。   引脚映射   启用运算放大器         配置信号路由 切换到Analog-Routing   点击  图标,进入路由编辑界面   选择要编辑的路由节点,点击       关键代码: 初始化:       cy_rslt_t result;       /*初始化 OPAMP0 */     result = Cy_CTB_Init(CTBM0, &pass_0_ctb_0_config);     if (result != CY_CTB_SUCCESS)     {         CY_ASSERT(0);     }     /*使能 Opamp0*/     Cy_CTB_Enable(CTBM0);   result = Cy_SAR_Init(SAR0, &pass_0_sar_0_config);     if (result != CY_SAR_SUCCESS)     {         CY_ASSERT(0);     }     /* 使能 SAR ADC */     Cy_SAR_Enable(SAR0);     读ADC通道值   /* 开始扫描 */ Cy_SAR_StartConvert(SAR0, CY_SAR_START_CONVERT_SINGLE_SHOT);         /*等待结束 */         Cy_SAR_IsEndConversion(SAR0, CY_SAR_WAIT_FOR_RESULT);         /* 获取通数0数据 */         adcResult0 = Cy_SAR_GetResult16(SAR0, 0);         /* 获取通道1数据 */         adcResult1 = Cy_SAR_GetResult16(SAR0, 1);         ……   总结 PSOC4100S Max的ADC模块功能丰富,操作简易,还有强大的路由功能,运放增益可选1倍或10倍。接下来,我继续介绍电容触摸的操作,敬请期待!  

  • 2025-01-03
  • 发表了主题帖: 英飞凌PSOC4100SMAX使用心得(I2C篇)

    本帖最后由 eew_4FmF97 于 2025-1-3 17:42 编辑 英飞凌PSOC4100SMAX使用心得(I2C篇) 上一篇介绍了CAN总线的使用,在这一篇我续写I2C使用,PSOC4100SMAX的I2C使用也是比较容易上手的, 配置I2C 配置时钟Peripheral-Clocks配置    Peripherals配置   配置PIN     这里需要注意电平,如果I2C SDA和SCL上没有外接上接电阻,距离短的情况下可以使用IO口内置的上拉     关键代码: (1)初始化:         cy_en_scb_i2c_status_t i2c_res;       cy_en_sysint_status_t int_res;         const cy_stc_sysint_t PASCO2_I2C_IRQ_config = {       /*.intrSrc =*/PASCO2_I2C_IRQ,       /*.intrPriority =*/3u };         /*初始化并使能I2C Master模式*/       i2c_res = Cy_SCB_I2C_Init(PASCO2_I2C_HW, &PASCO2_I2C_config,                     &PASCO2_I2C_context);       if (i2c_res != CY_SCB_I2C_SUCCESS) {              CY_ASSERT(0);       }         /* 挂载中断 */       int_res = Cy_SysInt_Init(&PASCO2_I2C_IRQ_config, &PASCO2_I2C_Interrupt);       if (int_res != CY_SYSINT_SUCCESS) {              CY_ASSERT(0);       }         NVIC_EnableIRQ((IRQn_Type) PASCO2_I2C_IRQ_config.intrSrc);       Cy_SCB_I2C_Enable(PASCO2_I2C_HW, &PASCO2_I2C_context);           .(2)读I2C寄存器   cy_stc_scb_i2c_master_xfer_config_t transfer; uint8_t readBuffer[20UL]; uint8_t writeBuffer[2UL] = { 0U }; uint8_t readDataLen; transfer.buffer = writeBuffer; transfer.bufferSize = 1; //只写寄存器地址 transfer.xferPending = true; //这里表示写入地址后面还要继续等待应答 transfer.slaveAddress = 0x28U;//I2C 从设备地址 writeBuffer[0]=0;//准备读的寄存器的起始地址 readDataLen=10;//读的寄存器个数   /*先写要读的寄存器地址*/ scb_status = Cy_SCB_I2C_MasterWrite(scbID, &transfer, i2cContext);        if (scb_status == CY_SCB_I2C_SUCCESS) {               /* 等待I2C通信 */               do {                      status = Cy_SCB_I2C_MasterGetStatus(scbID, i2cContext);                      Cy_SysLib_DelayUs(1u);               } while (0UL != (CY_SCB_I2C_MASTER_BUSY & status));               /* 配置读操作 */               transfer.buffer = readBuffer;               transfer.bufferSize = sizeof(readBuffer);               transfer.xferPending = false; /* 读操作完成后产生结束信号*/                (void) Cy_SCB_I2C_MasterRead(scbID, &transfer, i2cContext);               /* 等待 */               while (0UL                             != (CY_SCB_I2C_MASTER_BUSY                                           & Cy_SCB_I2C_MasterGetStatus(scbID, i2cContext))) {               }                 ……            }   (3)写寄存器也是类似的   uint8_t writeBuffer[20UL] = { 5U,6U }; uint8_t writeDataLen; transfer.buffer = writeBuffer; transfer.bufferSize = ; //只写寄存器地址 transfer.xferPending = false; //这里表示写入完成后结束通信 transfer.slaveAddress = 0x28U;//I2C 从设备地址 writeBuffer[0]=20;//准备写的寄存器的起始地址 writeDataLen=2;//写的数据长度   /*先写要读的寄存器地址*/ scb_status = Cy_SCB_I2C_MasterWrite(scbID, &transfer, i2cContext);        if (scb_status == CY_SCB_I2C_SUCCESS) {               /* 等待I2C通信 */               do {                      status = Cy_SCB_I2C_MasterGetStatus(scbID, i2cContext);                      Cy_SysLib_DelayUs(1u);               } while (0UL != (CY_SCB_I2C_MASTER_BUSY & status)); } ……   总结 PSOC4100S Max的库已经高度封装了I2C的基本操作,我们只需要简单调用就可以了,结合GPIO中断,就可以操作操作各种I2C外设了。接下来,我继续介绍ADC的操作,敬请期待!  

  • 发表了主题帖: 英飞凌PSOC4100SMAX使用心得(CAN篇)

    本帖最后由 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 配置系统时钟 因为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处理关键代码 启用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外部电路 考虑到适应复杂的外部环境,这里外接带隔离的CAN通信芯片     总结:Infineon ModusToolbox还是比较容易上手的,但是CAN总线速率还是需要注意的,在配置里显示的速度都是整数的KBPS,如果其他节点是例如62.5KBPS,有出现帧错误的风险。好了,这期就先介绍到这里,感谢观看,欢迎指教。下一篇我介绍4100SMAX的I2C功能使用。

  • 2024-12-20
  • 回复了主题帖: 有奖活动 | 英飞凌新品情报站:最新5V XENSIV™ PAS CO2传感器

    B站测评链接: https://www.bilibili.com/video/BV1s7kwYtE49/?vd_source=81f964fca8e9fa86477e196a1beb2e24

  • 2024-12-16
  • 发表了主题帖: 英飞凌XENSIV™ PAS CO2 5V Sensor2Go套件测评(一)

    本帖最后由 eew_4FmF97 于 2024-12-16 01:14 编辑 根据采集各种的环境的数据,形成感知,从而为AI提供决策依据,是智能家居系统核 心功能。空调是家居里面的环境最重要的组成部分,也是最大的能耗功能块,为了健康,需要适时启用新风或排气系统 ,但是,过于频繁的启动新风系统,又带来更大的能源损耗,智能家居系统如何作出最优的决策,需要精确的监测二氧化碳的浓度,过高则启动或提高新风系统换气频率,反之,当二氧化碳的浓度恢复正常数值又应当降低换气频率,以达到最佳平衡。以往,检测二氧化碳的传感器通常有非色散红外(NDIR)传感器、电化学或半导体传感器,非色散红外(NDIR)传感器比电化学或半导体传感器更昂贵,体积也大,但是NDIR提供更高的精度和稳定性,鱼与熊掌不能兼得。然而今天英飞凌推出具有颠覆性意义的环境传感器技术     XENSIVTM PAS二氧化碳传感器与光声(PAS)换能器(探测器、红外光源和滤光片)集成在一块PCB上,另外还有用于信号处理和算法的微控制器,以及用于驱动红外光源的MOSFET芯片。集成微控制器运行ppm计算,以及高级补偿和配置算法。 该传感器采用MEMS声学探测器。相比市售的二氧化碳传感器而言,这种声学探测器具有超高灵敏度,结合集成的PCB设计,可减少75%以上的空间需求。因此,XENSIVTM PAS二氧化碳传感器在尺寸和成本方面优于一流的NDIR传感器,并且不会影响性能。    特性  优势 外形特别小巧(14 x 13.8 x 7.5 mm3) 准确可靠的ppm级性能(精度为±30 ppm或读数的±3%) SMD封装,卷带包装交付 高级补偿和自校准算法 各种配置选项(如采样率、基线校准)和接口(UART、I2C、PWM) 可为客户最终产品节省空间 高品质数据并符合智能楼宇标准 经济划算的大批量组装,简便的系统集成 即插即用,可快速将设计推向市场 多种配置选项,为客户带来设计灵活性   高精度、高性价比,完美解决上面的难题。 现在我通过试用英飞凌XENSIV™ PAS CO2 5V Sensor2Go套件,向大家介绍一下这款划时代的产品的性能,我将分两篇文章,通过两个方式来体验其功能,一是通过英飞凌的Fusion UI,这是一款专门用来采集环境传感器的数据,并以曲线的形式来呈现,能够十分直观地观测XENSIV™ PAS CO2的性能,二是通过英飞凌的PSOC 4100S Max pioneer kit,通过MCU编程I2C的方式连接这款传感器,读写其寄存器,获取实时的数值,抛砖引玉,给大家作个参考,本文为第一篇,通过Fusion UI先了解一下XENSIV™ PAS CO2的性能。   安装Fusion UI 通过英飞凌的Developer Center,很容易找到FusionUI并安装       运行Fusion UI     经过一段时间监测,可以看到现在的CO2数值在310左右,是绿色段。   3.制造CO2 为了测试传感器的性能,我制造更多的CO2,方式很简单,小苏打+醋酸                     可以直观地看到数值的明显变化。

最近访客

< 1/1 >

统计信息

已有29人来访过

  • 芯积分:25
  • 好友:--
  • 主题:4
  • 回复:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言