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.

[参考译文] CC2650:如何导入 PIN 数据

Guru**** 2547540 points
Other Parts Discussed in Thread: CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1075300/cc2650-how-to-import-pin-data

部件号:CC2650

您好,


如果您知道,请告诉我。
我正在将一个传感器连接到 cc2650,并创建一个无线传输该传感器数据的传感器。
目前,例如,如果您连接到 DIO28,是否有一个缓冲区自动保留 PIN 数据的特定值?

有人可以告诉我吗?
Rina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Rina,

    请尝试重述您的问题,以便我更好地理解。  它将有助于提供更多详细信息,准确了解您正在尝试实现的目标以及阻止您实现此功能的原因。  我还建议您查看 数据表中的5.25 DC 特性TRM 中的11个 I/O 控制以及 TI-RTOS 2.21.00.06文档中的 PIN.h TI 驱动程序 API

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    感谢你的回复。

    我想创建一个具有以下两个函数的程序。
    ・我想捕获连接到 cc2650的 DIO28 PIN 的数据,间隔时间间隔要短于10毫秒
    ・我希望以80毫秒的间隔传输捕获的数据

    我认为 ADC_CONVERT 函数只能获得当前的 AD 值。
    但是,PIN 数据能否自动存储在特定缓冲区中? 我想。
    此外,当我使用两个锁定功能创建上述两个程序时,该程序会冻结。

    我对任何混淆表示歉意。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于 IOID_28可用作模拟引脚,因此您需要确保它未在主板文件中为 ADC 功能进行初始化。  例如,LaunchPad 项目有一个 CC2650_LAUNCHXL.h, 其中 CC2650_LAUNCHXL_ADCName 与 CC2650_LAUNCHXL_ADC2和 Board_DIO28_ANALOG 枚举,在  ADCBFCC26XX_adcChannelLut, CC26xxHWAtts of CC2650_LAUNCHXL.C.中定义为引用  因此,如果使用引脚28作为数字输入/输出,则需要删除所有这些内容  您需要提供更多有关您的锁定功能和程序冻结的详细信息(可能包括代码)。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复!

    请告诉我更多信息

    ・DIO28由 LaunchPad.h 等定义
    我想自动缓冲 DIO28 PIN 的传感器滴漏数据。
    为此,很难单独使用现有程序。因此,您是否认识到需要编辑和使用启动板等中有关 PIN 的内容?

    此外,我还创建了一个程序,以每天80毫秒的间隔读取和传输 AD 数据。
    但是,80ms 间隔的传感器数据中没有任何意义。
    我想要更多精确的传感器数据,所以我想知道 ADC 功能是否临时将滴漏数据存储在底座上。
    (如果可能,我想用任务或锁定来控制它,但很难设置锁定,因为传输间隔和捕获希望间隔不同...
    如果有传感器数据存储的位置,我会满怀希望地问我是否可以引用指针。)
    或者,我认为我可以创建一个机制,通过多任务处理等,在未经许可的情况下以1毫秒的间隔捕获数据


    如果您知道在编写这些计划时可能有帮助的任何材料,请告诉我。
    (我不知道如何很好地编写多任务处理程序...)

    非常感谢你们教我这么多东西!

    ありがとう!

    Rina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果需要 DIO28作为模拟引脚,则现有 LaunchPad 主板文件正常。  您可以从初始化中删除其他 ADC 引脚,以释放特定引脚的资源。  有关 具有连续采样的 ADC 缓冲器,请参阅 ADCBuf.h; 《BIOS 用户指南 》和 SYS/BIOS API, 以进一步了解如何创建和控制多个任务。  ADC 示例 也将是一个很好的使用资源。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您告诉我 ADCBF.h.
    我正在研究这个问题。
    请告诉我,因为有些地方您不知道有多少积分。

    ・缓冲器存储 PIN 信息的顺序是什么?
    →我想从缓冲器中提取 DIO28PIN 数据,但我不知道 PIN28在缓冲器中的写入位置
    →是否适合于识别它按 adcCC26xxHWAttrs 的顺序存储?

    ありがとう!

    Rina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    第一个样本放置在 Buffer[0]中,第二个字节放置在 Buffer[1]中,依此类推。  回调用于处理填充后的缓冲区,缓冲区大小由开发人员定义。  由于采样频率也是确定的,回调频率也是已知的。  当  应用程序处理第一个缓冲区时,第二个缓冲区可以在 ADCBuf_Recurrence _mode_continuous 模式下填充,如 adcBufContinuousSampling 示例中所示。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉,我对你说得不好。
    下图显示了运行『adcBufContinu脆弱』的结果。
    我们认识到,目前每个值都是一些 PIN 输出从 PIN23更改为 PIN30更改为 MV。
    我想知道哪些数据按什么顺序和顺序存储 microVoltBuffer[i]。
    我认为两个相关变量与完整信道/完整 ADCBuffer 相关。]
    我认为 continuousConversion.adcChannel 指向 PIN 信息,但这是对的吗?
    例如,在 DIO28 ADC_COMPB_IN_AUXIO2 0x0E 的情况下? 这就像认可吗?
    我不确定这里的优点是什么。
    请帮帮我…

    ありがとう
    Rina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Rina,

     对于 adcBufContinuousSampling,由于 ADCbuf_convert 的 channelCount 参数为1,因此只对 Board_DIO23_analog 进行采样。  要对 Board_DIO23_ANALOG 进行采样,您需要删除 adcCC26xxHWAttrs 的先前条目(如果未使用这些 ADC 引脚,则为最佳条目),或者将通道计数增加到6,在这种情况下,DIO28将是每第六次测量一次。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你的回复。
    我尝试根据所学内容编写代码,但这种认可是否合适...?
    我想要一个 μV 值,其中 DIO28/DIO29数据的采样频率为200Hz
    已在多个位置更改 adcBufContinuousSampling


    //**************************
    //adcBufContinuousSampling.c.
    //**************************

    /*配置转换结构*/
    continuousConversion.arg =空;
    continuousConversion.adcChannel =主板_ADCBufChannel0;
    continuousConversion.sampleBuffer = sampleBufferOne;
    continuousConversion.sampleBufferTwo = sampleBufferTwo;
    continuousConversion.samplesRequestedCount = ADCBUFFERSIZE;

    如果(!adcBuf)为
    system_abort ("adcBuf 未正确打开\n"\n);
    }

    /*开始转换。 *
    如果(ADCBuf_convert (adcBuf,&continuousConversion,2)!=
    ADCBUf_STATUS_SUCCESS){
    system_abort (“未正确启动转换过程\n”);
    }

    //**************************
    //CC2650_LAUNHHXL.c.
    //**************************

    const ADCbufCC26XX_AdcChannelLutEntry ADCbufCC26XX_adcChannelLutt[]={
    {Board_DIO24_ANALOG,ADC_COMPB_IN_AUXIO6},
    {Board_DIO25_ANALOG,ADC_COMPB_IN_AUXIO5},
    //{PIN_unassigned,ADC_COMPB_IN_VDDS},
    //{PIN_unassigned,ADC_COMPB_IN_DCOUPL},
    //{PIN_unassigned,ADC_COMPB_IN_VSS},
    //{Board_DIO23_ANALOG,ADC_COMPB_IN_AUXIO7},
    //{Board_DIO26_ANALOG,ADC_COMPB_IN_AUXIO4},
    //{Board_DIO27_ANALOG,ADC_COMPB_IN_AUXIO3},
    //{Board_DIO28_ANALOG,ADC_COMPB_IN_AUXIO2},
    //{Board_DIO29_ANALOG,ADC_COMPB_IN_AUXIO1},
    //{Board_DIO30_ANALOG,ADC_COMPB_IN_AUXIO0},
    };

    const ADCBFCC26XX_HWAttrs adcBufCC26xxHWAttrs [CC2650_LAUNCHXL_ADCBFCOUNT]={.}

    .intPriority =~0,
    .sw优先 级=0,
    .adcChannelLut = ADCBufCC26XX_adcChannelLut,
    .gpTimerUnit =主板_gptimer0A,
    .gptDMAChannelMask = 1 <<UDMA_CHAN_TIMER0_A,
    }
    };

    //**************************

    已将信道计数更改为2,并已注释出使用的非 DIO。
    此时的结果是下图。
    我在 DIO29[0],DIO28[0],DIO29[1],DIO28[1],DIO29[2],DIO29[2],DIO28[2]中有此序列... 我想它会像这样继续
    但是,在执行结果中,设计为在 DIO28/DIO29中变为0的位置不符合预期。
    这是因为我编写的代码中有错误吗?

    帮助我,,,
    Rina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否修改 了 adcCC26xxHWAttrs 以删除不需要的条目?  请使用类似 的 E2E 线程 作为指南。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉...您非常仔细地教了我。
    但是,我的理解不是很好,所以我希望你证实这一点。

    以下内容是否合适?
    ・在默认样本中,仅对 DC_COMPB_IN_VDDS 数据进行采样和输出。
    →从【ADCBuf_convert (adcBuf,&continuousConversion,1)转换的通道数】为1。
    →执行后显示的数据总共为11个(CC2650_LAUNHXL_ADCCOUNT)变量,这些变量在【ADCBufCC26XX_AdcChannelLutEntry ADCBufCC26XX_adcChannelLutt[]】中定义。
    但仅对 DC_COMPB_IN_VDDS 进行采样。

    此外,ADC 和 ADCBuffer 之间值的位数的差异是因为 ADCBuffer 显示为 MV。

    我的目标是 DIO28数据进入缓冲区。
    即使我看了你告诉我的链接,我也无法理解
    我想理解。

    请...
    Rina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有其他建议,因为我不清楚您的代码在目前是如何修改的,也不知道所提供的信息是真正正在衡量的来源。  请先评估基本示例代码,然后实施在我引用的其他 E2E 线程中有效的更改。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已将「adcbufcontinuous_CC2650_LAUNHXL_TI」从资源管理器加载到 Douun。
    没有什么改变。
    当我运行此程序时,屏幕上会以 MV 显示哪些信息?
    但我不确定我是否看过很多东西。「adcChannel = Board_ADCCHANNEL_A1;」
    什么表示缓冲? 那么,Buddy 是否随机包含 DIO23到 DIO30?
    那么,您是否告诉我删除了您不使用的 PIN?

    请告诉我。
    Rina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    随附的自述文件描述 了如何为 Board_ADCBuf0采集100个频率为500 Hz 的样本, 并 在 Board.h 中将 Board_ADCBufChannel0设置为零,该自述文件指向  ADCBFCC26XX_adcChannelLut 中的 ADC_COMPB_IN_VDDS。  此 E2E 线程中有一个公平的描述。  因此,   对于 Board_DIO28_ANALOG,应该将 Board_ADCBufChannel0更改为8。

    此致,
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我明白了!
    非常感谢您对我的指导。

    顺便说一下,当您将#define Board_ADCBufChannel0 (0)更改为"#define Board_ADCBufChannel0 (8)"时,
    当您触按 DIO28的引脚时,数值会发生变化。
    但是,即使接触到 DIO23的引脚,数值也会波动。
    这是我的主板有问题吗?

    非常感谢所有的事情。
    Rina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Rina,

    假设 ADC 值波动不大, 通常通过人体接触与模拟 IO 针脚交互会导致读数略有变化。  我过去使用 TI LaunchPad 完成了这项工作。  您应该将模拟针脚连接到传感器并屏蔽设备,以免发生此类干扰。

    此致,
    瑞安