[NOVATEK] NT96580行车记录仪功能学习笔记(持续更新~

一、u-Boot升级灯

运行u-Boot程序时LED灯闪烁,找到运行过程中一直在运行的函数在里面进行LED引脚电平的翻转

宏定义

Z:\SunFan\AHD580\pip\na51055_PIP\BSP\u-boot\include\configs\nvt-na51055-evb.h

Z:\SunFan\AHD580\pip\na51055_PIP\BSP\u-boot\drivers\mtd\nvt_flash_spi\nvt_flash_spi_cmd.c

自带led引脚电平设置函数

/*      LED function for FW update*/
static void led_set_gpio_high(int operation)
{u32 gpio_reg;int ofs = NVT_LED_RED_PIN/32;int shift = NVT_LED_RED_PIN & 0x1F;ofs = ofs*0x4;/*Set gpio as high*/gpio_reg = INW(IOADDR_GPIO_REG_BASE + 0x20 + ofs);#if 0if (gpio_reg & (1 << shift))RESTORE_GPIO_DIR = 1;else {gpio_reg |= (1 << shift);OUTW(IOADDR_GPIO_REG_BASE + 0x20 + ofs, gpio_reg);}#elsegpio_reg |= (1 << shift);OUTW(IOADDR_GPIO_REG_BASE + 0x20 + ofs, gpio_reg);#endifOUTW(IOADDR_GPIO_REG_BASE + 0x40 + ofs, (1 << shift));//LED BLUEofs = NVT_LED_BLUE_PIN/32;shift = NVT_LED_BLUE_PIN & 0x1F;ofs = ofs*0x4;gpio_reg = INW(IOADDR_GPIO_REG_BASE + 0x20 + ofs);gpio_reg |= (1 << shift);OUTW(IOADDR_GPIO_REG_BASE + 0x20 + ofs, gpio_reg);OUTW(IOADDR_GPIO_REG_BASE + 0x40 + ofs, (1 << shift));#if 0 // do not use delay!!! it will slow down flash erase/program!!!/*Config duration*/if (operation)mdelay(NVT_LED_PROGRAM_DURATION);elsemdelay(NVT_LED_ERASE_DURATION);#endif
}static void led_set_gpio_low(void)
{//u32 gpio_reg;int ofs = NVT_LED_RED_PIN/32;int shift = NVT_LED_RED_PIN & 0x1F;ofs = ofs*0x4;/*Set gpio as low*/OUTW(IOADDR_GPIO_REG_BASE + 0x60 + ofs, (1 << shift));//LED BLUEofs = NVT_LED_BLUE_PIN/32;shift = NVT_LED_BLUE_PIN & 0x1F;ofs = ofs*0x4;OUTW(IOADDR_GPIO_REG_BASE + 0x60 + ofs, (1 << shift));#if 0/*Force gpio direction as original config*/if (!(RESTORE_GPIO_DIR)) {gpio_reg = INW(IOADDR_GPIO_REG_BASE + 0x20 + ofs);gpio_reg &= ~(1 << shift);OUTW(IOADDR_GPIO_REG_BASE + 0x20 + ofs, gpio_reg);RESTORE_GPIO_DIR = 0;}#endif
}

在spiNand_programPage和nand_cmd_erase_block里面进行计数电平翻转

二、将内容保存在Flash里面

在UIInfo.h(na51055_PIP\code\application\source\cardv\SrcCode\UIWnd\SPORTCAM\UIInfo\UIInfo.h)里面名为UI_IndexInfo的枚举类型定义一个成员用来计数(枚举类型里面的美格成员都是一个唯一的整数值),然后通过SysSetFlag()和SysGetFlag()函数来设置和获取枚举类型成员的值

1、应用场景:ACC断开后震动开机次数计数

(1)在UIInfo.h定义一个名为SF_SHOCKPOWERON_CNT的成员来记录震动开机次数

(2)然后在震动开关机文件里面的函数应用

UIWnd\SPORTCAM\UIFlow\UIFlowMovie\UIFlowWndMovie.c:

每次开机都会跑这个函数,acc接入震动开机计数清零、acc断开开机一次计数值甲乙

System\SysMain_Exe.c:在System_OnShutdown关机函数里面判断计数值是否超过预设值,调用Gsensor_SetSensitivityParking(GSENSOR_OFF);并传入参数GSENSOR_OFF使得下次震动无法开机

// Gsensor_SetSensitivityParking(DrvPower_GetBatteryValue()<210?GSENSOR_OFF:SysGetFlag(FL_GSENSOR));
/*sf begin*/
if((SysGetFlag(SF_SHOCKPOWERON_CNT)>10)||(DrvPower_GetBatteryValue()<210)){Gsensor_SetSensitivityParking(GSENSOR_OFF);
}else{Gsensor_SetSensitivityParking(SysGetFlag(FL_GSENSOR));
}
/*sf end*/

三、低电检测

System\SysMain_Exe.c:在System_OnShutdown关机函数里面调用DrvPower_GetBatteryValue通过ADC读取当前电压

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/24455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是JWT(Json-Web-Token)?JWT的用途和优势是什么?

什么是JWT&#xff08;Json-Web-Token&#xff09;&#xff1f; JWT&#xff0c;全称JSON Web Token&#xff0c;是一种开放标准&#xff08;RFC 7519&#xff09;。它定义了一种紧凑的、自包含的方式&#xff0c;用于在各方之间安全地传输信息。这种信息被设计成JSON对象格式…

简介RESTful API和中间件Web API网关

从RESTful API开始 RESTful API(Representational State Transfer API)是一种设计Web服务的架构风格,它基于REST(Representational State Transfer)理论。REST是一种软件架构风格,由Roy Fielding在其博士论文《Architectural Styles and the Design of Network-based So…

LeetCode 550, 380, 234

目录 550. 游戏玩法分析 IV题目链接表要求知识点思路代码 380. O(1) 时间插入、删除和获取随机元素题目链接标签思路代码 234. 回文链表题目链接标签思路代码 550. 游戏玩法分析 IV 题目链接 550. 游戏玩法分析 IV 表 表Activity的字段为player_id&#xff0c;device_id&am…

Linux卸载残留MySQL【带图文命令巨详细】

Linux卸载残留MySQL 1、检查残留mysql2、检查并删除残留mysql依赖3、检查是否自带mariadb库 1、检查残留mysql 如果残留mysql组件&#xff0c;使用命令 rpm -e --nodeps 残留组件名 按顺序进行移除操作 #检查系统是否残留过mysql rpm -qa | grep mysql2、检查并删除残留mysql…

k8s——Pod容器中的存储方式及PV、PVC

一、Pod容器中的存储方式 需要存储方式前提&#xff1a;容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。 首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重启它&#xff0c;但是容器中的文件将丢失——容器以干净的状态&…

TensorRT 精度debug分析工具

tensorRT还提供了一套可用于engine生成过程中debug的工具&#xff0c;包括Polygraphy、ONNX GraphSurgeon和PyTorch-Quantization。这些小工具用处很大&#xff0c;值得花时间进一步研究。 Debug方法示例 polygraphy Polygraphy是TensorRT官方提供的一系列小工具合集&#x…

spring源码解析-(1)关于Bean

什么是Bean&#xff1f; 是spring对所有注入到IoC容器中的类的统称。 我们要注册进入spirng的bean千奇百怪&#xff0c;所以spring必须需要使用一个统一的定义来标识bean&#xff0c;就有了接下来的BeandDefinition&#xff0c;通过名称我们就可以知道&#xff0c;他是对bean…

美国演员工会SAG-AFTRA 要求人工智能在广告中使用演员声音需征得同意并付费

SAG-AFTRA 的新豁免允许在人工智能生成的广告中使用演员的声音&#xff0c;但需要同意、补偿和安全措施 美国演员工会&#xff08;SAG-AFTRA&#xff09;推出了一项新的豁免&#xff0c;以保护会员免受未经授权的人工智能在广告中使用其声音的影响。动态人工智能音频广告豁免定…

C语言Kruskal算法求最小生成树

Kruskal算法求出最小生成树。 图形 算法描述 先找最小权值边为1的边有&#xff08;V1&#xff0c;V4&#xff09;&#xff0c;&#xff08;V2&#xff0c;V9&#xff09;&#xff0c;保证不产生回路就可以成功选择边 除去上一次找的边后&#xff0c;在找权值最小的边为2的有&a…

制作AI问答机器人:从0到1的完整指南

在数字化转型的浪潮中&#xff0c;企业正追求更高效、智能的客户服务解决方案。AI问答机器人以其快速响应、全天候服务和持续学习的能力&#xff0c;成为了提升客户满意度和加速业务发展的关键工具。本文将深入探讨如何制作一个企业级的AI问答机器人&#xff0c;并强调其功能体…

OpenAI发表研究论文 介绍了一种逆向工程AI模型工作原理的方法

ChatGPT 开发商 OpenAI 构建人工智能的方法本周遭到了前员工的抨击&#xff0c;他们指责该公司利用可能有害的技术冒不必要的风险。今天&#xff0c;OpenAI 发布了一篇新的研究论文&#xff0c;目的显然是为了表明它在通过提高模型的可解释性来应对人工智能风险方面的认真态度。…

hot100 -- 二分查找

目录 前言 &#x1f382;搜索插入位置 &#x1f33c;搜索二维矩阵 &#x1f33c;排序数组元素第一和最后一个位置 &#x1f33c;旋转排序数组 &#x1f4aa;旋转排序数组中的最小值 &#x1f4aa;两个正序数组的中位数 前言 二分算法学习_时间超限ac:0%-CSDN博客 &#…

2024年【起重机械指挥】考试及起重机械指挥新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机械指挥考试考前必练&#xff01;安全生产模拟考试一点通每个月更新起重机械指挥新版试题题目及答案&#xff01;多做几遍&#xff0c;其实通过起重机械指挥试题及解析很简单。 1、【多选题】《中华人民共和国特…

【Androi】安卓发展历程详解

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

git推送代码到github拒绝推送的解决方案

这里描述一下本地推送的场景&#xff0c;首先我在码云上建立了一个前端项目&#xff0c;进行了自己的个性化开发&#xff0c;后期在github上创建了一个一样的项目仓库存放代码。使用webstorm进行代码开发。在下面这个位置可以选择推送的代码位置。 选择推送github仓库之后&…

Python深度学习基于Tensorflow(16)基于Tensorflow的对话实例

文章目录 基础数据清洗数据生成词汇表定义分词器并制作数据集构建Transformer模型并训练模型推理 Tensorflow 的核心就是注意力机制&#xff0c;在之前详细的介绍过&#xff0c;具体可以看这个&#xff1a;Python深度学习基于Tensorflow&#xff08;9&#xff09;注意力机制_te…

在Java中为什么对a赋值为10,在进行a++时还是等于10呢

首先我们看这样一组代码 public class demo1 {public static void main(String[] args) {int a10;aa;System.out.println(a);} } 结果&#xff1a;10不是在第二步有a操作吗&#xff1f;为什么还是10呢&#xff1f; a的执行步骤如下&#xff1a; 保存当前a的值&#xff08;即10…

websocket链接携带参数

前端创建链接时官方提供的构造函数 var aWebSocket new WebSocket(url, [protocols]); url&#xff1a;要连接的URL&#xff1b;这应该是WebSocket服务器将响应的URL。 protocols&#xff1a;可选&#xff1b;一个协议字符串或者一个包含协议字符串的数组。这些字符串用于指定…

智能语音电销机器人可以做哪些事情?ai语音机器人系统

智能语音电销机器人软件的出现&#xff0c;给很多企业都带来了福利&#xff0c;尤其是电销企业&#xff0c;不仅工作效率提升了&#xff0c;成本降低了&#xff0c;还能实现智能化管理客户的出现&#xff0c;给很多企业都带来了福利&#xff0c;尤其是电销企业&#xff0c;不仅…

python初学者笔记(八)——数字阶乘

#python初学者笔记&#xff08;8&#xff09;——数字阶乘 阶乘是基斯顿卡曼于 1808 年发明的运算符号,是数学术语,一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积。 下面利用Python编写数字阶乘 ##1.方法一:利用函数的方法&#xff0c;求输入值的阶乘 #coding…