经过较长时间的调试,UJA1075实现进入到Sleep模式了,目标就是实现V1和V2电源的关闭,但目前这个V1的硬件电压没有实现完全关断(已经实现关断),借着查看手册的机会,整理一下UJA1075的芯片手册,写一篇较高规格的开发笔记【憨笑】

一、首先、UJA1075与微控制的通信是SPI全双工通信

1)SPI的片选SCSN低有效;关于片选SCSN连续或不连续(亲测,不影响正常读数据);时钟极性,在高电平有效(读数据)

2)根据UJA1075的时序图、可以了解到SPI的数据方向是高位在前;因为寄存器为16位,所以SPI发送为两个Buffer十六字节;时钟相位为在第二边沿开始

3)关于总线时钟,UJA1075手册没有严格要求、所以S32DS的SPI配置如下

4)简单介绍一下UJA1075的寄存器、通过寄存器的高三位选择要设置的寄存器,第四位用来设置属性(可读可写\只读)

5)首先实现简单的SPI通信、见如下波形图,信号线1和信号线2分别为SPI输入和输出

二、实现SPI通讯后下来我们来设置UJA1075的通讯模式、以下为主要的三种模式切换图

1)要实现V2的关断,最简单的方式是将MC=10,并且保证UJA1075没有产生复位事件、并且MC没有设置为MC=00(这个寄存器具体在Mode_Control register)

第一次调试就被UJA1075的复位事件搞得头晕,现在整理一下复位事件所有来源(注意:复位事件不会导致寄存器设置重置、复位事件会触发寄存器LHWC=1、只有重新上电才会重置寄存器,并且POSI位会触发):

可以看到系统复位的主要来源为外部复位,看门狗溢出、和不正当操作寄存器,还有一个当UJA1075刚刚上电进入待机模式时、此时也会产生系统复位。并且UJA1075芯片复位的输出信号为LIMP跛脚功能输出低电平。

2)为关闭V2电源、目前外部复位引脚RSTN为悬空(引脚断开),并且不进行寄存器的其他操作;我们来看看门狗,看门狗有三种模式分别为(窗口、超时和关闭模式),并且看门狗的默认时钟周期为128ms(当看门狗产生复位的时候,周期将被重置到128ms)。

看门狗的模式切换依据为:通过UJA1075寄存器的WMC位来设置

看门狗的喂狗方式为通过对WD_and_Status Register的写操作,喂狗后看门狗立即复位,内部定时器开始重新计数

1、在启用看门狗超时模式时,同时会唤醒CI(循环中断),超时模式的看门狗喂狗周期为理论NWP周期内

2、看门狗在窗口模式的喂狗周期为NWP理论周期的后半部分

注意:触发在前半部分则触发或溢出会产生系统复位(具体的触发时间在Ttrig(wd)1和Ttrig(wd)2之间)

窗口模式下看门狗在正常模式喂狗将产生新的复位事件,同时进入窗口模式的条件是(当引脚WDOFF为低电平,SBC处于正常模式且看门狗模式控制位(WMC)设置为0时,看门狗处于窗口模式。)

3、当看门狗可以通过两种方式进入OFF模式

第一种通过寄存器设置WMC=1设置,但UJA1075的模式必须处于Standby待机模式,且这种关闭方式可以被任何挂起未决中断事件(Pending)将唤醒它;

第二种通过强制给WDOFF引脚高电平,则会完全关闭看门狗,此时中断事件将不能唤醒它,但在正常\待机模式(Normal\Standby)模式更改WDOFF状态也会产生系统复位

4、通常S32K喂狗使用为看门狗量身定做的LPIT定时器。但关闭V2较简单的方式目前是将RSTN引脚断开、关闭WDOFF=1、清除在待机模式下LHWC位因上电等其他原因产生的复位事件,然后写寄存器进入Mode_Control register的MC=10正常(Normal)模式。

三、在实现对V2电源的关闭下,我们就已经掌握了看门狗的操作和寄存器的读写。下来我们来实现V1的关闭:

1、从正常模式(Normal)或待机模式(Standby)进入睡眠模式(Sleep)的条件基本一样(此处推荐大家用谷歌)

  • 进入睡眠模式(Sleep)的条件:通过将Mode_Control寄存器(表5)中的MC位设置为01,可以从待机模式或正常模式中选择睡眠模式。只要没有待处理的中(引脚INTN =高电平)或唤醒事件,并且至少有 一觉醒信号源已启用(CAN,LIN或WAKE)。 在不满足这些条件之一的情况下进行任何尝试进入休眠模式的操作都会导致短暂的复位(最小脉冲宽度为3.6 ms;请参见第6.5.1节和表11)。

2、先来看一下UJA1075的中断事件:V1和V2欠压中断(V1UI、V2UI)V1欠压阈值可设置90%或70%;CAN、LIN唤醒中断(CWI、LWI);看门狗超时模式启用的循环中断(CI);芯片上电中断(POSI);和Wake1和Wake2外部硬件唤醒中断(WI1、WI2检测边沿方式可以设置),同时这些中断事件可以通过给相应位写1来清除。

3.下来介绍一下唤醒事件:CAN、LIN唤醒事件(CWI、LWI),Wake1和Wake2唤醒事件(WI1、WI2),唤醒后UJA1075将进入待机模式

LIN硬线唤醒条件:为LIN总线上持续(Twake(busdom)=28~104us(微妙))低电平即可唤醒(亲测可用)

CAN唤醒条件:总线上在规定时间内实现隐性显性序列信号

Wake1和Wake2本地唤醒事件:唤醒边沿触发,具体唤醒边沿可设置(在Int_Control register寄存器)

4、现在我们进入(Sleep)睡眠模式、从待机或者正常模式都可以。首先确保没有中断事件,像POSI(上电中断)、循环中断(CI)和LHWC(复位中断),一般在初次设置寄存器时就会产生,因此需要上电后就将这些中断关闭。像LIN和外部唤醒中断Wake1和Wake2只要硬件不去使能就不会产生中断事件(通常LIN悬空、Wake1和Wake2拉低就可以);然后将看门狗关闭,防止看门狗溢出,产生不必要的系统复位事件对UJA1075的模式进行影响;开启至少一个唤醒源(CAN、LIN、Wake1或者Wake2),我选择全部开启;然后写寄存器MC=01进入Sleep模式。

下图是使用RTT进行打印的时候,产生的POSI、LHWC、CI中断,通过清除中断事件,和向相应寄存器写1来清除中断事件。

这个是当寄存器中断和复位事件被清除后,结合芯片手册可以从masterDataSendReg1寄存器清晰地读到此时看门狗被硬件强制关闭(此时寄存器操作的看门狗将无效);masterDataSendReg2读到当前模式处于MC=10,V2已经是关闭了;masterDataSendReg3读到当前寄存器没有开V1、V2欠压中断,LIN和CAN处于低功耗随时可以总线唤醒,Wake1和Wake2同时被设置为下降沿唤醒检测;masterDataSendReg4读到当前没有任何的中断被唤醒。(注意:RTT打印的寄存器左边为高八位,右边为低八位)

5、当从正常模式进入睡眠模式后,SPI通讯处于关闭状态,RSTN引脚为低,INTN引脚为高(没有待处理的中断)

通过外部按键操作UJA1075寄存器进入Sleep,如下图所示,SPI通讯数据为00。(此时测得的V1电压为3.95V,关掉单片机电源后,芯片电压降到0.5V,然后缓慢下降)

四、唤醒Sleep,通过上面的模式切换图可知,三种唤醒事件可以将Sleep模式唤醒(CAN、LIN、本地唤醒事件WAKE)

Wake1本地唤醒事件:通过外部给WAKE1引脚一个下降沿信号唤醒

1、首先使用Wake1本地唤醒事件,从寄存器可以读出唤醒后,masterDataSendReg1可以读到V2产生了低于检测电压事件(低于2.7V);masterDataSendReg2的MC=00,处于待机模式,并产生LHWC复位事件,masterDataSendReg4中读到Wake1中断标志位产生。(此时V1的电压为5V)

2,此时只需要清除WI1中断标志位,便可重新写寄存器到进入(Sleep)睡眠模式

LIN总线唤醒事件:通过给LIN总线一个持续的低电平信号

1、首先使用LIN总线唤醒事件,从寄存器可以读出唤醒后,masterDataSendReg1可以读到V2产生了低于检测电压事件(低于2.7V);masterDataSendReg2的MC=00,处于待机模式,并产生LHWC复位事件,masterDataSendReg4中读到LIN中断标志位产生。(此时V1的电压为5V)

2、当使用CAN或者LIN进入睡眠模式时,对寄存器写1只能清除中断标志,不能清除挂起的事件,需要对正常模式下对STBCC和STBCL写0,(如需下次唤醒源还是CAN和LIN,则需要将STBCC和STBCL重新置1)然后才可以再次进入Sleep模式

基于S32DS实现CAN、LIN基础结合芯片UJA1075的功耗模式切换设置(Standby、Normal、Sleep)相关推荐

  1. Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建

    为什么80%的码农都做不了架构师?>>>    一.关于框架更名的一点说明 最近在做年终总结.明年规划.还有几个项目需要了结.出解决方案,事情还比较多,死了不少脑细胞,距离上一篇文章 ...

  2. 大学计算机基础python学多久_基于Python 的“大学计算机基础”课程教学设计

    基于Python 的"大学计算机基础"课程教学设计 日期:2018-04-11 04:32 摘要 培养非计算机专业大学生的计算思维能力,在"大学计算机基础"课程 ...

  3. cnn 准确率无法提升_清华类脑芯片再登Nature: 全球首款基于忆阻器的CNN存算一体芯片...

    传统计算架构中计算与存储在不同电路单元中完成,造成大量数据搬运功耗增加和额外延迟,被认为是冯·诺依曼计算架构的核心瓶颈. 人类的大脑却并非如此,而是直接在记忆体里计算.被认为具有「存算一体」潜力的忆阻 ...

  4. unity 斥力_基于绝对能量守恒原理的基础物理理论-国家科技图书文献中心.PDF

    基于绝对能量守恒原理的基础物理理论-国家科技图书文献中心 基于绝对能量守恒原理的基础物理理论 周 宇 (宇电自动化科技有限公司,厦门 361006) 摘要:本文提出一个在不同参考系及引力场具有守恒性质 ...

  5. 基于实践的LabVIEW零基础入门视频教程

    原文地址::http://blog.eeecontrol.com/LabVIEW1/ <基于实践的LabVIEW零基础入门视频教程> 资料不在多,而在于精,资料太多,反而会迷失方向,学习最 ...

  6. 基于Quartus Prime的NiosII基础开发流程

    基于Quartus Prime的NiosII基础开发流程 2018年11月23日 21:44:13 bt_ 阅读数 2246 更多 分类专栏: FPGA 版权声明:本文为博主原创文章,遵循 CC 4. ...

  7. 基于python的量化投资基础(Chapter.0)——概述

    量化交易概述 量化交易就是通过数理统计模型方式及计算机程序化发出买卖指令去实现投资理念.实现投资策略的过程,以获取稳定收益为目的的交易方式. 广义的量化投资=基于现代科学方法的理论体系+研究方式+工程 ...

  8. adonis-rest - 基于AdonisJs的Restful API基础构件

    adonis-rest 基于AdonisJs的Restful API基础构件, AdonisJs中文网: https://adonis-china.org https://github.com/wxs ...

  9. 计算机php开发技术,基于PHP技术的计算机基础考试系统的开发

    余攀 摘 要 对于这个系统相关的开发,主要是针对于我们学校的计算机基础考试来进行的,从对于考试进行计时,先自动的进行分管卷子,然后进行试题管理等等方面进行相关的研究,这样的话可以更好地进行相应的研究, ...

最新文章

  1. cap mysql_.NetCore关于Cap(RabbitMQ)结合MySql使用出现MySql相关类冲突问题解决办法
  2. [C++再学习系列] 函数模板和类模板
  3. 发布:IE自动打印插件
  4. java kafka分布式_Kafka分布式消息系统
  5. 全球及中国汽车卡钳行业产销需求现状与投资策略分析报告2022年版
  6. 推荐VSCode12个比较实用的插件
  7. linux lvm lv扩充--虚拟机,虚拟机新增磁盘后lvm下的lv扩容
  8. r-cnn 行人检测_了解对象检测和R-CNN。
  9. Slurm如何管理和使用节点资源
  10. MATLAB自定义函数并绘制
  11. 无线局域网安全(一)———WEP加密
  12. 520情人节|用Python跟‘喜欢的人’表白
  13. 【经典】双子男与天蝎女的爱情故事
  14. 开门的磁卡在哪里配_门禁卡能配吗?
  15. Quartus II下载器件库(新)
  16. OSI七层模型 (详细讲解,看这一篇就够了)
  17. [转]kaldi ASR: DNN训练
  18. ECMWF等大气数据批量下载(Python API)详细步骤
  19. 对应届毕业生参加面试的一些建议
  20. 五大算法之动态规划套路详解(1)

热门文章

  1. 体感ar数字互动教学制作实现学生共享优质教育
  2. cuda学习笔记5——CUDA实现图像形态学腐蚀、膨胀
  3. leetcode题解(含解题思路)(持续更新中)
  4. Express 报错:Failed to lookup view error in views directory 处理
  5. 网络工程师软件安装包合集
  6. 帝国CMS(EmpireCMS) v7.5配置文件写入漏洞分析
  7. 转至老熊三分地--inside sqlplus prelim
  8. 【LINUX】STM32MP1笔记1-安装入门包
  9. 新买的显示器怎么测试软件,新买的电视如何检测屏幕?记住这个方法
  10. 常见功能测试设计方法