This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我正在使用 TM4C1294NCPDT 和 TI-RTOS 开发嵌入式应用。
我必须配置 ADC 以读取模拟输入。
我在 TI-RTOS 启动之前初始化 ADC。
请澄清以下几点:
1.是否可以在 TI-RTOS 启动后配置序列发生器或建议在 TI-RTOS 启动之前和 TI-RTOS 启动之后可以执行哪种 ADC 配置?
2.是否可以为共享同一基座的不同 ADC 序列发生器配置不同的时钟?
例如,我将 ADC0 base 用于 SS0和 SS1,是否可以处理具有不同时钟频率的 SS0和 SS1?
3.是否可以为共享同一基准的 ADC 序列发生器配置不同的基准电压?
例如 ,我将 ADC0 base 用于 SS0和 SS1,是否可以使用内部基准电压处理 SS0,使用外部基准电压处理 SS1?
此致、
Harshel
Harshel、您好!
[引用 user="Harshel]1. 是否可以在 TI-RTOS 启动后配置序列发生器,或者建议在 TI-RTOS 启动之前和 TI-RTOS 启动之后可以执行哪种 ADC 配置?
我不确定是否可以、但我可以咨询 TI-RTOS 专家、即使可能:
1) 1)在 TI-RTOS 开始使用裸机 API 之前、您通过配置可获得哪些好处?
2) 2)您计划如何让 TI-RTOS 随后使用 ADC?
[引用 user="Harshel]2. 是否可以为共享同一基址的不同 ADC 序列发生器配置不同的时钟?[/QUERT]
如果您是指实际的源时钟、则不是、ADC 基准将获得源时钟。 您是否意味着不同的采样频率?
[引用 user="Harshel]3. 是否可以为共享同一基准的 ADC 序列发生器配置不同的基准电压?[/QUERT]
否、您需要使用单独的 ADC 基准来选择不同的基准电压。 这是在 ADC 基准电平而不是 ADC 序列电平上处理的。
[引用用户="Ralph Jacobi"]
Harshel3.是否可以为共享同一基准的 ADC 序列发生器配置不同的基准电压?
否、您需要使用单独的 ADC 基准来选择不同的基准电压。 这是在 ADC 基准电平而不是 ADC 序列电平上处理的。
[/报价]
毫无疑问、供应商代理在其陈述中"正确"。
但是-(可能)可以(通过) 实现海报所要求的"应用 于(相同) ADC 基极的不同(即开关)基准电压"。
建议使用合适的"模拟多路复用器 IC"-在 GPIO 控制下-(可能)能够为 MCU 的模拟基准输入提供"电压!"
很久以前、我的小型科技公司采用了这样的方法-成功-但这并不能保证"现在就成功了"。 (但是、测试应该能快速回答。) 另请注意、在发生此类"电压切换"之后-在"尝试访问 ADC "之前、一定要施加"延迟"。 实验还可能发现(可能)"模拟基准输入"处的"额外电容(可能必要)(这样之前的基准电压电平不会完全衰减)-以及"先断后合"开关操作和快速开关 ANA 多路复用器。
[编辑]: 进一步思考-我们很可能对我们的"最高精密电压"采用了"上拉电阻器"-以应用于模拟基准输入。 然后、全日空多路复用器能够"强制(斜升)输入达到所需的模拟电压电平-同时"防止输入过度衰减!"
此外-是否没有可能提供"命令时的电压"的高度稳定(接近"精密")电压基准(和/或稳压器)? (有时、通过 GPIO 将单个电阻器拉(切换)至接地、使电压"快速且精确"地改变电平!) 再说一次-留出足够的时间让 MCU 的 ADC "接受这个新的基准电压"。
祝你好运 Harshel——已经有一段时间了……
我需要在设计中定义硬件和软件组件的初始化序列、还需要确定硬件和软件的映射。
我需要最好的方法来处理 TI-RTOS 环境中的上述问题。
这是使用模拟多路复用器的好解决方案。
但它依赖于外部电压源的稳定。
如果应用要求提供足够的时间使用模拟多路复用器切换电压、
大多数"全部"工程决策/选择-涉及"权衡"。
的确、全日空 MUX 实施以"灵感启发"为基础。
稳定和切换时间必须为"受您支配并由您支配"-重点实验-告知并建议流程...
Harshel、您好!
然后、您应该通过 TI-RTOS 配置所有内容、而不是在其启动之前进行配置。 我在查看 RTOS 示例产品、但我没有看到 ADC 的示例产品、所以让我邀请一位 RTOS 专家来看看它们是否能帮助您从这里开始。
您好 Harshel、
我建议您使用 Hwi 模块来插入 ADC ISR (请参阅 tirtos_tivac_ \products\tidrivers_tivac_ 例如\packages/ti\drivers\i2c\I2CTiva.c 文件)。 请勿使用 driverlib 中的 IntRegister (或 IntRegister 的变体。。。查看 此内容 了解详情)。
您可以使用 driverlib 调用来根据需要设置和管理 ADC 外设(在调用 BIOS_start 之前和/或之后)。
Todd
谢谢 Todd。
我已经将 Hwi 模块用于中断、它工作正常。
他们的文档是否指定了 driverlib API,以便在 BIOS_start()前后使用?
[引用 user="Harshel"]
2.是否可以为共享同一基座的不同 ADC 序列发生器配置不同的时钟?
例如,我将 ADC0 base 用于 SS0和 SS1,是否可以处理具有不同时钟频率的 SS0和 SS1?
[/报价]
是的、可以通过对 SSIO 触发处理器配置 SS0和 SS1的两个专用 GPTM 调用来实现。
如果安装 TM4C LM4计时器模块比 driverlib 增加了更好的 IO 控制功能、那么 Todd 可能会详细说明如何处理每个 SSIO 捕获结果的任务。
没有关于将 driverlib 与 TI-RTOS 结合使用的文档。 基本上、让内核管理矢量表(包括管理 BASEPRI 寄存器)。 注:内核在 BIOS_start 期间启用中断。
Todd
[引用 user="ToddMullanix"]基本上、让内核管理矢量表(包括管理 BASEPRI 寄存器)。 注:内核在 BIOS_start 期间启用中断。
我认为这一点在您之前的帖子中得到了很好的阐述。 我之前提到的是启用/配置 TM4C LM4计时器模块、而不是替代的 driverlib。 我心目中的内核会将挂钩添加到 TM4C 计时器模块中、在这里调用 driverlib 来配置 GPTM 可能不会这样做?
用户可以使用 TI-RTOS 中的计时器模块、也可以通过 driverlib 自行管理。 请注意、内核中的时钟模块默认配置一个计时器来驱动计时机制(例如 Task_sleep 和 Semaphore_pend)。 如果需要、用户可以提供时钟节拍。 有关更多详细信息、请参阅时钟模块的文档。
[引用 user="ToddMullanix"]用户可以使用 TI-RTOS 中的计时器模块或通过 driverlib 自行管理。
嗯、我尝试了 TI-RTOS、它使用 时钟模块单个计时器通过 Tivaware 配置了6个计时器。 我还记得、调用 Tivaware SW 中断信标来打印物联网统计数据的任务除了 速度太慢之外、还会混合调用的时序! 另一个不良症状 是 任务加载 产生抖动 图、0-100% CPU 使用率。
另一点是、它们不是 RTOS 配置的计时器、 而是显示 为 任务相关的异步 CPU 负载周期。 当 TI-RTOS 大量加载启用的外设时、双核 MCU (Delfino)可能更适合。
编辑:我相信 LM4计时器模块是 TM4C 计时器模块、并在未配置实例的情况下启用该模块。 似乎 LM4计时器模块应向上兼容 TM4C 计时器、并扩展 GPTM 计时器的 HWI 中断处理。 这也许会修复 CPU 负载监控器从计时器和 SW 中断置为有效的任务调用中反弹的问题。
编辑:我相信 LM4计时器模块是 TM4C 计时器模块、并在未配置实例的情况下启用该模块。 似乎 LM4计时器模块应向上兼容 TM4C 计时器、并扩展 GPTM 计时器的 HWI 中断处理。 这也许会修复 CPU 负载监控器从计时器和 SW 中断置为有效的任务调用中反弹的问题。