- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NXP LPC1788 微 Controller ,并且正在尝试编写代码,让我能够在模拟 channel 0-7 上执行 ADC 测量。我现在的代码是:
uint16_t getADCChannelValue(uint8_t adcChannel)
{
uint16_t adc_value;
ADC_ChannelCmd(LPC_ADC, adcChannel, ENABLE);
ADC_StartCmd(LPC_ADC, ADC_START_NOW);
// Wait for measurement to complete.
while (!(ADC_ChannelGetStatus(LPC_ADC, adcChannel, ADC_DATA_DONE)));
adc_value = ADC_ChannelGetData(LPC_ADC, adcChannel);
ADC_ChannelCmd(LPC_ADC, adcChannel, DISABLE);
// With delay - code works. Without delay - channel 0 is correct,
// channels 1-7 have values close to channel 0 (~2150) (incorrect).
//OS_Delay(1);
return adc_value;
}
随着延迟,代码似乎可以工作,但我不希望出现任意延迟。我已经研究了几个小时的代码,无论出于何种原因,当存在延迟时,就会设置溢出标志(也就是说,当函数输出正确的值时,它会提示溢出)。
我仅向模拟 channel 0 施加电压。这是包含延迟时得到的输出:
Channel 0 = 2151
Channel 1 = 35
Channel 2 = 33
Channel 3 = 34
Channel 4 = 32
Channel 5 = 34
Channel 6 = 32
Channel 7 = 31
当不包含它时:
Channel 0 = 2150
Channel 1 = 2151
Channel 2 = 2151
Channel 3 = 2150
Channel 4 = 2150
Channel 5 = 2150
Channel 6 = 2149
Channel 7 = 2150
有没有人编写过任何代码,可以让我运行所有 ADC channel 并尽快记录它们的值,而不会出现任意延迟?
最佳答案
标签,我认为你应该使用“突发模式”。这是我的 ADC 初始化代码:
void adcHandlerInit()
{
// Clear all bits of the analog pin registers except for the filter disable
// bit.
*((uint32_t *)(LPC_IOCON_BASE + ((BRD_ADC_CH_PORT_0 * 32
+ BRD_ADC_CH_PIN_23)*sizeof(uint32_t)))) = 1 << 8;
*((uint32_t *)(LPC_IOCON_BASE + ((BRD_ADC_CH_PORT_0 * 32
+ BRD_ADC_CH_PIN_24)*sizeof(uint32_t)))) = 1 << 8;
*((uint32_t *)(LPC_IOCON_BASE + ((BRD_ADC_CH_PORT_0 * 32
+ BRD_ADC_CH_PIN_25)*sizeof(uint32_t)))) = 1 << 8;
*((uint32_t *)(LPC_IOCON_BASE + ((BRD_ADC_CH_PORT_0 * 32
+ BRD_ADC_CH_PIN_26)*sizeof(uint32_t)))) = 1 << 8;
*((uint32_t *)(LPC_IOCON_BASE + ((BRD_ADC_CH_PORT_1 * 32
+ BRD_ADC_CH_PIN_30)*sizeof(uint32_t)))) = 1 << 8;
*((uint32_t *)(LPC_IOCON_BASE + ((BRD_ADC_CH_PORT_1 * 32
+ BRD_ADC_CH_PIN_31)*sizeof(uint32_t)))) = 1 << 8;
*((uint32_t *)(LPC_IOCON_BASE + ((BRD_ADC_CH_PORT_0 * 32
+ BRD_ADC_CH_PIN_12)*sizeof(uint32_t)))) = 1 << 8;
*((uint32_t *)(LPC_IOCON_BASE + ((BRD_ADC_CH_PORT_0 * 32
+ BRD_ADC_CH_PIN_13)*sizeof(uint32_t)))) = 1 << 8;
PINSEL_ConfigPin(BRD_ADC_CH_PORT_0, BRD_ADC_CH_PIN_23, BRD_ADC_CH_FUNC_NO_1);
PINSEL_ConfigPin(BRD_ADC_CH_PORT_0, BRD_ADC_CH_PIN_24, BRD_ADC_CH_FUNC_NO_1);
PINSEL_ConfigPin(BRD_ADC_CH_PORT_0, BRD_ADC_CH_PIN_25, BRD_ADC_CH_FUNC_NO_1);
PINSEL_ConfigPin(BRD_ADC_CH_PORT_0, BRD_ADC_CH_PIN_26, BRD_ADC_CH_FUNC_NO_1);
PINSEL_ConfigPin(BRD_ADC_CH_PORT_1, BRD_ADC_CH_PIN_30, BRD_ADC_CH_FUNC_NO_3);
PINSEL_ConfigPin(BRD_ADC_CH_PORT_1, BRD_ADC_CH_PIN_31, BRD_ADC_CH_FUNC_NO_3);
PINSEL_ConfigPin(BRD_ADC_CH_PORT_0, BRD_ADC_CH_PIN_12, BRD_ADC_CH_FUNC_NO_3);
PINSEL_ConfigPin(BRD_ADC_CH_PORT_0, BRD_ADC_CH_PIN_13, BRD_ADC_CH_FUNC_NO_3);
/* Configuration for ADC :
* ADC conversion rate = 400Khz
*/
ADC_Init(LPC_ADC, 400000);
ADC_IntConfig(LPC_ADC, BRD_ADC_INTR_0, DISABLE);
ADC_IntConfig(LPC_ADC, BRD_ADC_INTR_1, DISABLE);
ADC_IntConfig(LPC_ADC, BRD_ADC_INTR_2, DISABLE);
ADC_IntConfig(LPC_ADC, BRD_ADC_INTR_3, DISABLE);
ADC_IntConfig(LPC_ADC, BRD_ADC_INTR_4, DISABLE);
ADC_IntConfig(LPC_ADC, BRD_ADC_INTR_5, DISABLE);
ADC_IntConfig(LPC_ADC, BRD_ADC_INTR_6, DISABLE);
ADC_IntConfig(LPC_ADC, BRD_ADC_INTR_7, DISABLE);
// Start burst mode.
ADC_ChannelCmd(LPC_ADC, ADC_CHANNEL_0, ENABLE);
ADC_ChannelCmd(LPC_ADC, ADC_CHANNEL_1, ENABLE);
ADC_ChannelCmd(LPC_ADC, ADC_CHANNEL_2, ENABLE);
ADC_ChannelCmd(LPC_ADC, ADC_CHANNEL_3, ENABLE);
ADC_ChannelCmd(LPC_ADC, ADC_CHANNEL_4, ENABLE);
ADC_ChannelCmd(LPC_ADC, ADC_CHANNEL_5, ENABLE);
ADC_ChannelCmd(LPC_ADC, ADC_CHANNEL_6, ENABLE);
ADC_ChannelCmd(LPC_ADC, ADC_CHANNEL_7, ENABLE);
ADC_StartCmd(LPC_ADC, ADC_START_CONTINUOUS);
ADC_BurstCmd(LPC_ADC, ENABLE);
}
底部的部分很重要。它将使微 Controller 对所有 ADC channel 执行重复测量。之后,您可以通过以下方式获取 channel 电压值:
uint16_t getADCChannelValue(uint8_t adcChannel)
{
return (uint16_t)ADC_ChannelGetData(LPC_ADC, adcChannel);
}
这应该可以帮助你。然而,很高兴能找到一种不使用突发模式来做到这一点的方法,因此任何具有不依赖突发模式的正确答案的人都应该代替我获得接受的答案。
关于c - 有人为 NXP LPC17xx ADC 编写过工作代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18315161/
我下载了 CMSIS 版本 3,但在使用时遇到了一些问题。主要问题在startup_device.s。我不知道如何正确完成该文件,也找不到任何好的文档。有人尝试过使用这个cmsis版本吗?如何进行?正
我正在使用 NXP LH79524 ARM7TDMI SOC 处理器开发嵌入式设备。 我的任务是将通过UART0传输的工作数据转换为使用DMA。 我们有一个 2k 的格式化 ASCII 数据缓冲区,我
为什么在NXP网站上没有搜索到“JCOP”或J2A040、j3d081等术语?我想开始 Java Card 开发并在名为的市场中找到 Java Card JCOP21-72 J2A040 基于 NXP
Freescale (NXP) S32V234板,没有提供ADC驱动。同样在文档上似乎没有详细描述。为什么没有更多的 Material 或示例驱动程序。请告诉我一个人。 最佳答案 根据 the NXP
我正在使用 NXP 提供的 NDEF 标签和 NFC 标签编写器应用程序,但在索尼手机应用程序中显示内存为 524 字节,但在 MOTO 手机中显示为 52 字节内存。我花了很多时间寻找解决方案,但没
今年早些时候,我使用 Electron 框架(由 Github 制作)开发了一个应用程序,现在我想将它嵌入到我购买的 SBC 中。SBC 是来自 DIGI 的 ConnectCore6,基于 NXP
我正在使用 NXP LPC1788 微 Controller ,并且正在尝试编写代码,让我能够在模拟 channel 0-7 上执行 ADC 测量。我现在的代码是: uint16_t getADCCh
有没有办法找出 Android 设备上的 NFC 堆栈(或芯片组)?我正在创建一个带有 NfcV 类(ISO15693 标签)自定义实现的应用程序。结果表明,在 Nexus S、Galaxy S2、N
前段时间,我试图在 NXP 的 LPC3143 上对 ADC 进行编程,但没有成功。现在 5 年后我给自己买了一个 LPC4088 Quick start board并尝试使用 LPC4088。 AD
我正在开发一个具有强大加密功能的 NFC 技术的身份验证系统。 NXP 有两种解决方案:Mifare DESFire EV1,它是一种具有存储区域和 3DES 和 AES128 加密功能的芯片,以及
我目前正在开发一个项目,尝试 NXP 的 NT3H2211 IC,它是一个 NFC 标签,包含一个 64 字节 SRAM,可以映射到 NFC 接口(interface)可见的地址空间。该 IC 包含在
一个多星期以来,我一直在尝试使用 Mifare Ultralight C 对 Android 手机进行身份验证。我已经确认我可以写入标签(通过写入不安全的内存页面,然后阅读我写的内容)。我还可以写入关
我是卡片软件的新手,想了解卡片软件的一些优点- “传统”NXP Desfire EV1 8K 到- NXP J3D081 表示具有 Desfire EV1 仿真功能的 P5CD081 JCOP 80K
我想将 NFC 卡模拟应用程序移植到运行 CyanogenMod 的智能手机,但这似乎需要一部带有 NXP 的 NFC Controller 的手机。 有没有人知道一些目前仍然有 NXP NFC Co
我们在 NXP PICO-PI-IMX6UL 上的 Android Things 应用程序安装/启动/运行时间非常长。当直接在命令行上使用 Android Studio 和 adb 时,可以观察到此问
遵循此设置指南:https://developer.android.com/things/hardware/imx7d.html 我正在使用 USB Type-C 电缆连接开发板和计算机。计算机正在使
我有 NXP i.MX7D Android Things 开发套件。该套件已设置并可以毫无问题地连接到我的 wifi,但我无法将设备连接到 Android Things Toolkit app。在我的
我正在尝试在我的 Android 应用程序中读取 NXP 开发的 NFC 标签。可以用 Android 读取标签:App by NXP和 one other正确阅读。 确切的标签类型是“ICODE S
这个问题已经有答案了: How to execute cmd commands via Java (11 个回答) 已关闭 7 年前。 我正在尝试创建一个桌面应用程序(用java创建),它将在内部运行
我正在尝试在 NXP LS2088 ARDB 的 linux 平台上从源代码安装 MariaDB。我正在使用以下 link 当我第一次尝试在/usr/local/mysql 中使用命令 scripts
我是一名优秀的程序员,十分优秀!