- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用相同的序列器测量一些 ADC channel 。我以 Texas Tiva's ARM Cortex-M4 Workshop 的第 5 章为基础.因此,我的(中断的)原始代码运行良好:
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ints.h"
#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
uint32_t ui32ADC0Value[4];
volatile uint32_t ui32TempAvg;
volatile uint32_t ui32TempValueC;
int main(void) {
SysCtlClockSet(
SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_SYSDIV_5);
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
SysCtlPeripheralReset(SYSCTL_PERIPH_ADC0);
ADCSequenceDisable(ADC0_BASE, 1);
ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
GPIOPinTypeADC(GPIO_PORTD_BASE,
GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2);
ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_TS);
ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_TS);
ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_TS);
ADCSequenceStepConfigure(ADC0_BASE, 1, 3,
ADC_CTL_TS | ADC_CTL_IE | ADC_CTL_END);
IntEnable(INT_ADC0SS1);
ADCIntEnable(ADC0_BASE, 1);
ADCSequenceEnable(ADC0_BASE, 1);
IntMasterEnable();
while (1) {
ADCProcessorTrigger(ADC0_BASE, 1);
}
}
void ISRHandler(void) {
while (!ADCIntStatus(ADC0_BASE, 1, false)){};
ADCIntClear(ADC0_BASE, 1);
ADCSequenceDataGet(ADC0_BASE, 1, ui32ADC0Value);
ui32TempAvg = ui32ADC0Value[3];
ui32TempValueC = (1475 - ((2475 * ui32TempAvg)) / 4096) / 10;
}
但是如果我改变这部分
ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_TS);
ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_TS);
ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_TS);
ADCSequenceStepConfigure(ADC0_BASE, 1, 3,
ADC_CTL_TS | ADC_CTL_IE | ADC_CTL_END);
通过这部分(因此步骤 0 到 2 读取其他 channel ,而不是 ADC_CTL_TS),其中我的模拟引脚 channel 接地(因此测量读数接近零):
ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_CH7);
ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_CH6);
ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_CH5);
ADCSequenceStepConfigure(ADC0_BASE, 1, 3,
ADC_CTL_TS | ADC_CTL_IE | ADC_CTL_END);
第 3 步(我测量 ADC_CTL_TS 的地方)变得疯狂,范围值完全不连贯。此外,查看调试,TS 的测量看起来像是“走”通过其他步骤,因为当其中 3 个接近 0 时,另一个“移动的”要大得多。它看起来像是时间错位。
为什么,以及如何解决?谢谢。
最佳答案
Tiva C 的 ADC 定序器正在将样本读入专用 FIFO,不同定序器具有不同的深度。在您的情况 (SS1) 中,FIFO 深度为 4。现在让我们看看如何触发 ADC。您正在主循环中运行 ADCProcessorTrigger
,没有任何延迟或与 ADC 读取同步,甚至没有检查之前的转换是否已完成。因此,随着样本的传入,它们不断地从 FIFO 中“推出”先前的样本,并且 FIFO 很容易失去同步(例如,来自 channel i
的样本将被转移到其他一些放在 FIFO 中,甚至推出。)。所以正确的方法是在FIFO中的数据被完全读取后触发转换,并且在中断中完成。所以我建议将 ADCProcessorTrigger
部分放在中断处理程序的末尾附近(并将初始触发器放在 main
中)。
关于c - 具有不同步进源的 Tiva ADC 定序器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28563492/
我有一个 TIVA tm4c123G 我一直在尝试使用 I2C 协议(protocol)在它和我的 ADXL345 传感器之间建立通信,我成功地从加速度计写入和读取设备地址的读数以及我刚刚写入的寄存器
我正在尝试使用 TM4c123 构建一个简单的逻辑分析仪,但任何时候当我使用函数 ROM_.... 时,它似乎都是一个错误(隐式函数 ROM_..)有人知道为什么吗? 例如: ROM_FPUEnabl
我正在进行一个新的嵌入式系统项目,该项目分析输入频率并获取频率系数,并根据此信息生成一些信息。 我将使用 Tiva C TM4C 微 Controller ,并且我进行了大量搜索以查找任何兼容的 C
我正在尝试使用相同的序列器测量一些 ADC channel 。我以 Texas Tiva's ARM Cortex-M4 Workshop 的第 5 章为基础.因此,我的(中断的)原始代码运行良好:
我使用的是tm4c1294+lwip1.4.1+FreeRTOS。 当 netconn_alloc() 被调用用于套接字通信 时,它会分配一个未使用的信号量。信号量的个数定义为SYS_SEM_MAX,
我有一个 tiva c 微 Controller tm4c123gxl我已经尝试使用 I2C 一段时间了板上的模块带有数字加速度计但没有结果,我一直在尝试设置MDR注册一个要发送的特定值,但它保持为
在 Tiva(德州仪器 Cortex M4F ARM)TM4C129XNCZAD 上,我遇到了 I2C 接口(interface)问题。我通过端口 K 在 I2C 模块 4 上启用了主设备,通过端口
我正在尝试通过 I2C 总线将我的 Launchpad 设备连接到 Pololu MinIMU9v2 9DoF 传感器。我在 Linux 环境中工作,使用 arm-none-eabi-gcc 进行编译
在 Tiva (Texas Instruments Cortex M4F ARM) TM4C129XNCZAD 上,我遇到了 I2C 接口(interface)的另一个问题。我通过端口 K 在 I2C
我试图让 PF0 和 PF4 LED 在按下开关时闪烁。但它根本不打开任何 LED。 有人告诉我需要使用两个端口,我不明白为什么,因为这可以只用一个端口来完成 - 在本例中为端口 D - 但有人建议我
我目前正在上在线类(class) UT.6.02x 嵌入式系统 - 塑造世界,该类(class)使用 Tiva C TM4C123GXL LaunchPad。我也在看《The Definitive G
我使用 Tiva C 系列 TM4C123GH6PM 和 Code Composer Studio 从另一个相同类型的微 Controller 获取数据。好吧,我得到的数据以字节为单位。项目的目标是组
在研究有关 Stellaris/Tiva USB 库的 TI 文档时,我找不到该库是否可用于 DMA 传输。特别是,批量传输设备似乎不提供 DMA 的配置选项。 (整个手册只提到了 DMA for H
我目前正在尝试将我的 Tiva C 系列与 Sparkfun 分线板、IMU 数字组合板 - 6 自由度 ITG3200/ADXL345 连接,但我在使用 I2C 接口(interface)时遇到了问
该程序应该检测哪个开关打开,然后将交通灯更改为红色、黄色或绿色。我陷入困境,我不知道我的初始化是否适合端口 A 和端口 E。我们只想更改 DEN 和 DIR。当我在调试中运行它时,什么也没有发生。应该
我想使用 CMake 构建过程在 C++ 中对我的 Tiva C 系列 LaunchPad 板进行编程。我下载了一个简单的示例来闪烁我使用 make 构建的 RGB LED,我希望能够使用 cmake
我正在尝试从 Getting Started with the Tiva 运行实验 3 练习(第 71 页)。我将 Tiva C 系列 TM4C123GH6PM 与 Code Composer Stu
我正在使用 Makefile 在 Linux 中编译应用程序。我的编译器来自 Imperas (ovp world)。编译应用程序后,我得到一个 *.elf 文件,我想使用 TI 的软件 Unifla
我是一名优秀的程序员,十分优秀!