S32K344_MCAL_ADC

博主因工作需求开展S32K344开发,分享配置过程与心得。介绍了S32K344基本属性,如通道数量、分辨率等,还详细讲解功能,包括内部框图、运行过程、时钟及触发方式(标准触发、注入、BCTU触发),最后表示工作重心转移,后续再更新。

0.闲话

工作需求,将会开展一段时间的S32K344的开发,本人也是萌新,就一边学习一边写一些配置过程和心得吧,欢迎各位大佬一起交流和指教。

---------------------------------------------------------------------------------------------------------------------------------

        因为英文不太好,所以把芯片手册译了一下和原版对照着看,也算是快速上手的一个方式吧。

1.基本属性

1.S32K344一共有3个instance,表里的信息貌似有错误,内部特殊通道ADC_0有4个,1/2分别有3个(别人说的)。特殊通道指的是温度传感器一类的。

这里的精密通道,标准通道区别是分辨率,精密通道可以达到12bit,标准通道达到10bit,注意,无论分辨率是多少bit,最终的转换结果都是15位,进行左/右对齐后输出。

外部通道是ADC提供三个外部解码信号,用于从外部模拟多路复用器的八个通道中选择一个通道。最多可以有四个这样的多路复用器用于连接32个外部通道。ADC根据选择用于转换的当前通道,自动设置解码信号以控制这些外部模拟多路复用器。

2.一个ADC通道可能有多个PAD驱动,当设置某一个PAD为AI后,要查一下是不是默认的,否则要配置一下DCM寄存器。

2.功能详解

1.内部框图

2.运行过程

这里数据手册有详细解释,我翻译一下:

1.当ADC接收到三种不同类型的触发器(BCTU、注入或正常)中的一种时,优先级多路复用器(Priority Multiplexer)启动转换。
2.根据触发器类型和自检的配置,进行通道选择。
3.状态机(FSM)从空闲状态转换为转换状态。如果下一次要转换的通道为外部通道,那么转换在DSDR[DSD]配置的延迟后开始。
4.转换开始后,转换控制块将保持内部电容网络CDAC保持相同的CTRi[INPSAMP]的时间。
5.在比较阶段,CALBISTREG[RESN]定义了用于执行逐次逼近算法的步数。校准期间确定的误差校正值将添加到原始结果中。如果平均值被启用(MCR[AVGEN]=1),最多32个(通MCR[AVGS]指定)转换结果被平均以获得后果。
7.当转换完成且所有平均步骤均已完成时:
A. 转换完成信号置位。
B. 转换_数据[14:0]写入数据结果寄存器。(左对齐为[15:1])
C. FSM状态机切换为完成状态。
8.通道选择块中的下一个输入被选择,FSM状态机切换到转换状态,第二次转换开始。这将持续进行,直到所有选定的通道输入都已转换。
9.如果启用了模拟看门狗,则将转换结果与配置的阈值进行比较。如果满足条件,可以触发中断。
自检可以检查ADC的完整性,可以与正常转换交错进行,也可以作为独立检查。
10.如果正在进行的转换被中止(通过将1写入MCR[ABORT]),或一组输入通道的转换被中止(通过将1写入MCR[ABORTCHAIN]),FSM将转换为空闲状态。如果MCR[ABORT]写1,则转换控制块停止当前转换;如果MCR[ABORTCHAIN]写1,则完成当前转换再中止转换。在这两种情况下,转换控制块的转换完成输出信号都会被置1。

3.时钟

ADC模块支持最高频率为80MHz,如果选择时钟超过范围要进行分频

4.触发

S32K344的触发方式为,有触发就按通道开始转换,很直接。一共有三种触发信号。

1.标准触发:

传统的ADC触发信号,由软件或硬件触发,启动一次DMA转换,可以是单次或连续扫描。

其中软件触发模式就是给MCR[NSTART]写1,而硬件触发就是通过TRGMUX模块来配置其他外设信号触发标准通道转换。

  转换的顺序为Precision—>standard—>external,同类型通道则从小往大。当所有使能的标准通道转换完成后ECH中断置位。

2.注入

注入信号的优先级高于标准触发,当一个注入信号过来,如果当前正在转换标准信号则会进入中断,先进行注入信号的转换。

注入触发方式也是有软件触发和硬件触发两种,软件触发就是对MCR[JTRGEN]写1,而硬件触发就是通过TRGMUX模块来配置其他外设信号触发ADC注入通道转换。

不同类型通道的转换顺利同上,当使能的注入通道全部转换完成后,JECH中断置位。

3.BCTU触发

BCTU触发是由外部模块进行触发

BCTU向ADC输出触发与通道号,ADC返回转换完成标志,数据和已准备好下次转换信号。转换结果也保存在相应通道的数据寄存器中,并在请求时与模拟看门狗阈值进行比较。

BCTU有两种触发模式

1.注入模式

在注入模式下,BCTU的信号为最高优先级,当正在进行的普通转换收到BCTU触发时,会进入中断,当正在进行的注入转换收到BCTU触发时,会中断注入链,只有BCTU注入会继续进行。只有在ADC校准成功后,才能请求BCTU转换。应用程序必须防止在校准过程中触发任何BCTU。

以下是手册描述:

在触发器模式下,还可以执行正常转换和注入转换。所有类型的转换都可以在此模式下启动。下文讨论了三种类型转换的优先次序。 当接收到触发时,通道编号被作为注入的通道值,并且触发的注入转换开始。此时MSR[BCTUSTART]自动转换为1,当触发的注入转 换完成时,它也自动重置为0。 只有在ADC校准成功后,才能请求BCTU转换。应用程序必须防止在校准过程中触发任何BCTU。 如果在正在进行的注入转换期间接收到BCTU触发器,则注入链立即中止,并且只有BCTU触发的注入转换继续进行。此外, MSR[JSTART]被重置为零。注入转换的中止由MSR[JABORT]指示。 如果在正在进行的正常转换期间接收到BCTU触发,则暂停正在进行的普通信道转换,并且处理BCTU所触发的注入转换。BCTU触发 的转换完成后,从暂停的通道恢复正常转换。 如果在BCTU转换过程中请求正常转换(MSR[BCTUSTART]=1),则在BCTU转换完成后开始正常转换(将MSR[BCTUSTART]重 置为零)。 如果在BCTU转换过程中提出要求,任何注入的转换都将被丢弃,并且MCR[JSTART]立即重置为零。

2.控制模式

在控制模式下,只有BCTU信号会被响应,其他信号全部忽略。

 --------------------------------------------------------------------------------------------------------------------------------

被保安大爷gank了,把我灯关了,明天再写。2023/9/6/20:57

工作重心切到芯钛A8了,等一段时间我再来更新。

$ git checkout -b Develop origin/Develop error: unable to create file CBD2500154_D02.0/ThirdParty/Mcal_S32k/Supply/SW32K3_S32M27x_RTD_4.4_4.0.0_P20/eclipse/plugins/Adc_TS_T40D34M40I0R0/examples/EBT/S32K3XX/Adc_example_S32K388/debug/VDK/S32K388_RTD/scripts/simprobe_scripts/I2C_MONITOR_SCML_COMMAND.py: Filename too long error: unable to create file CBD2500154_D02.0/ThirdParty/Mcal_S32k/Supply/SW32K3_S32M27x_RTD_4.4_4.0.0_P20/eclipse/plugins/Adc_TS_T40D34M40I0R0/examples/S32DS/S32K396/Adc_Sar_Bctu_Ip_example_S32K396/Project_Settings/Debugger/Adc_Sar_Bctu_Ip_example_S32K396_Debug_FLASH_PNE.launch: Filename too long error: unable to create file CBD2500154_D02.0/ThirdParty/Mcal_S32k/Supply/SW32K3_S32M27x_RTD_4.4_4.0.0_P20/eclipse/plugins/Adc_TS_T40D34M40I0R0/examples/S32DS/S32K396/Sd_Adc_Dspss_Ip_example_S32K396/Project_Settings/Debugger/Sd_Adc_Dspss_Ip_example_S32K396_Debug_FLASH_PNE.launch: Filename too long error: unable to create file CBD2500154_D02.0/ThirdParty/Mcal_S32k/Supply/SW32K3_S32M27x_RTD_4.4_4.0.0_P20/eclipse/plugins/Adc_TS_T40D34M40I0R0/examples/S32DS/S32K3XX/Adc_Sar_Bctu_Ip_example_S32K344/Project_Settings/Debugger/Adc_Sar_Bctu_Ip_example_S32K344_Debug_FLASH_PNE.launch: Filename too long error: unable to create file CBD2500154_D02.0/ThirdParty/Mcal_S32k/Supply/SW32K3_S32M27x_RTD_4.4_4.0.0_P20/eclipse/plugins/Adc_TS_T40D34M40I0R0/examples/S32DS/S32K3XX/Adc_Sar_Bctu_Ip_example_S32K358/Project_Settings/Debugger/Adc_Sar_Bctu_Ip_example_S32K358_Debug_FLASH_PNE.launch: Filename too long error: unable to create file CBD2500154_D02.0/ThirdParty/Mcal_S32k/Supply/SW32K3_S32M27x_RTD_4.4_4.0.0_P20/eclipse/plugins/Adc_TS_T40D34M40I0R0/examples/S32DS/S32K3XX/Adc_Sar_Bctu_Ip_example_S32K388/Project_Settings/Debugger/Adc_Sar_Bctu_Ip_example_S32K388_Debug_FLASH_PNE.launch: Filename too long fatal: cannot create directory at 'CBD2500154_D02.0/ThirdParty/Mcal_S32k/Supply/SW32K3_S32M27x_RTD_4.4_4.0.0_P20/eclipse/plugins/Ae_TS_T40D34M40I0R0/examples/EBT/S32M276/Ae_Handler_Faults_Example_EB_001_S32M276/TresosProject/Ae_Handler_Faults_Example_EB_001_S32M276': Filename too long
08-16
<think>首先,用户的问题是:"请问Git checkout error Filename too long Windows",这是在Windows系统上使用Git时遇到"Filename too long"错误的问题。用户意图是解决这个错误,以便成功完成git checkout操作。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 参考站内引用: - 引用[^1]:Git Filename too long错误的原因是文件名超过Windows限制的260字符长度。解决方案:全局配置git config --system core.longpaths true。 - 引用[^2]:快速解决方法包括启用Git长路径支持,使用git config --system core.longpaths true(需管理员权限)或git config core.longpaths true(仅当前仓库)。 - 引用[^3]:其他解决方案如使用git sparse-checkout或克隆特定路径。 - 引用[^4]:关于Git配置代理等,但主要相关的是长路径设置。 用户的问题集中在git checkout错误上,所以我需要提供针对这个错误的解决方案。关键点是Windows的文件名长度限制。 我的回答应该: 1. **解释错误原因**:简要说明为什么会出现这个错误。 2. **提供解决方案**:逐步指导如何解决,包括不同的方法。 3. **结构清晰**:使用列表或步骤来组织。 4. **生成相关问题**:在回答结束后添加相关问题部分。 5. **添加引用标识**:在引用的信息末尾添加[^1]、[^2]等。 解决方案总结: - 主要方案:启用长路径支持。 - 全局设置:git config --system core.longpaths true(需要管理员权限)。 - 局部设置:git config core.longpaths true(仅当前仓库)。 - 其他方法:如使用git sparse-checkout来避免克隆长路径文件。 - 注意事项:确保Git版本支持这个功能(较新版本都支持)。 回答结构: - **开头**:确认错误并解释原因。 - **主体**:提供详细的解决步骤。 - **结尾**:总结和生成相关问题。 使用中文回答。 生成相关问题: - 基于这个主题,生成2-3个相关问题,例如: 1. 如何检查Git的长路径设置是否生效? 2. 在Windows上还有其他方法解决文件名过长问题吗? 3. Git稀疏检出有什么优势和劣势? 添加引用: - 在引用参考信息的地方添加[^1]、[^2]等。例如,当提到全局配置时,添加[^1][^2]。 最终回答: - 确保LaTeX格式正确,但在这个上下文中,可能没有数学表达式,所以不需要使用$...$或$$...$$,除非涉及数学内容。用户的问题是关于Git的,所以可能不需要数学格式。但系统指令说"所有行内数学表达式",如果没有,就不用添加。</think>### Git checkout 错误 "Filename too long" 在 Windows 上的解决方案 在 Windows 系统上使用 Git 执行 `git checkout` 命令时,出现 "Filename too long" 错误,是因为某些文件的文件名长度超过了 Windows 的文件路径限制(默认 260 个字符)。这会导致检出操作失败。下面我将逐步解释原因并提供多种解决方案,确保您能顺利完成操作。所有方案均基于 Git 官方文档和社区最佳实践。 #### 错误原因 - Windows 系统对文件路径长度有严格限制(最大 260 字符),而 Git 仓库中可能包含文件名较长的文件(常见于大型项目或依赖库)。 - 当您执行 `git checkout` 时,Git 尝试将文件写入本地磁盘,但文件名过长会触发系统错误[^1][^2]。 #### 解决方案 以下是已验证的解决方法,从最简单到进阶排序。**推荐先尝试方法 1**,如果无效再使用其他方法。 1. **启用 Git 长路径支持(推荐)** 这是最直接的方案,通过修改 Git 配置允许处理超长文件名: - **全局设置(所有仓库生效)**: 以管理员权限打开 Git Bash 或命令提示符(CMD),执行: ```bash git config --system core.longpaths true ``` 然后重新运行 `git checkout`。 *注意:`--system` 参数需要管理员权限,否则会报错。*[^1][^2] - **局部设置(仅当前仓库生效)**: 在仓库根目录下打开 Git Bash,执行: ```bash git config core.longpaths true ``` 完成后重试 `git checkout`。 *适用场景:避免全局修改,适合临时解决特定仓库问题。*[^2] 2. **验证配置是否生效** 执行以下命令检查长路径设置: ```bash git config --get core.longpaths ``` 如果输出 `true`,表示配置成功;如果输出 `false` 或为空,请重复方法 1 的步骤[^1]。 3. **使用稀疏检出(Sparse Checkout)** 如果长路径支持无效,或仓库过大,可以只检出部分路径(避免长文件名文件): ```bash # 克隆仓库但不检出文件 git clone --no-checkout https://github.com/your-repo.git cd your-repo # 初始化稀疏检出 git sparse-checkout init --cone # 设置要检出的子目录(例如只检出 src 目录) git sparse-checkout set src # 完成检出 git checkout ``` *优势:减少文件数量,规避长路径问题。缺点:需要手动指定路径。*[^3] 4. **其他备选方案** - **更新 Git 版本**:确保使用 Git 2.25+ 版本(早期版本对长路径支持不完善),从 [Git 官网](https://git-scm.com/) 下载最新版。 - **缩短仓库路径**:将仓库克隆到更短的根路径下(如 `C:\git\repo`),减少绝对路径长度。 - **使用第三方工具**:如 `git-annex` 或 `Git LFS` 处理大文件,但需项目支持。 #### 注意事项 - **管理员权限**:全局设置(`--system`)必须用管理员模式运行终端,否则会失败[^2]。 - **兼容性**:长路径支持在 Git 2.15+ 版本中稳定,但 Windows 10 1703+ 系统效果最佳。 - **预防措施**:在团队协作中,建议在 `.gitattributes` 文件中添加 `core.longpaths true` 配置,避免重复问题。 通过以上步骤,您应该能成功解决 `git checkout` 错误。如果问题仍然存在,请提供更多上下文(如 Git 版本和错误日志),以便进一步排查。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值