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:ADS1292R 与 TM4C1294NCPDT Tiva C 微控制器的接口

Guru**** 2473260 points
Other Parts Discussed in Thread: TM4C1294NCPDT, ADS1292R

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/680620/tm4c1294ncpdt-ads1292r-interface-with-tm4c1294ncpdt-tiva-c-micro-controller

器件型号:TM4C1294NCPDT
主题中讨论的其他器件: ADS1292R

您好!

我正在尝试将 ADS1292R ECG AFE 与 TM4C1294NCPDT Tiva C 微控制器进行连接。

我已按如下方式配置 SSI0。

void SPI_Setup()

SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);

SSIDisable (SSI0_BASE);

GPIOPinConfigure (GPIO_CONFIG_SSI0CLK);
GPIOPinConfigure (GPIO_CONFIG_SSI0RX);
GPIOPinConfigure (GPIO_CONFIG_SSI0TX);
GPIOPinConfigure (GPIO_PA3_SSI0FSS);

GPIOPinTypeSSI (GPIO_PORta_base、(GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_3));// SPI0
SSIAdvModeSet (SSI0_BASE、SSI_ADV_MODE_LEGACY_LEGACY_);
SSIConfigSetExpClk (SSI0_BASE、                                                        // SPI0
40000000、                                                                           SSI 时钟的//系统时钟
SSI_FRF_MOTO_MODE_1、                                                             //数据帧格式(极性0、相位1)
SSI_MODE_MASTER、                                                                 //配置为主设备
SSI0_SPEED、                                                                        //设置速度
8);                                                                                 //字节长字长

SSIEnable (SSI0_BASE);

我的连接显示在随附的文件中  

   Tiva C 控制器-- ADS1292R

PN4 ---- ARD_PWDN/复位

PQ0--- ARD_START

PQ1---- ARD_DRDY

PA3 ---- ARD_CS

PA4 ---- ARD_MOSI

PA5 ---- Aard_MISO

PA2---- ARD_SCK

我尝试通过 Tiva C 控制器写入 ADS1292R 的寄存器。 我可以在示波器上看到预期的数据和时钟、但无法确认 ADS 是否正确接收到数据。

我已经按照 ADS 的数据表、按以下方式写入单个寄存器

第一个字节--写入操作码|寄存器地址

第二字节--(写入1的寄存器数)

第三字节--- 寄存器数据

现在我尝试回读写的寄存器、我期望的是读回我已经写过的值、读操作通过以下方式完成。

第一个字节--读取操作码|寄存器地址

第二字节--(要读取的寄存器数)

第三字节--- 0x00  

但我无法读回写入的值、我正在从同一个寄存器中读出其他一些值。 因此,我无法理解问题在哪里。

从寄存器读取的值是否为二进制补码格式?

注意:在执行 SPI 写入之前、ADS 的 RESET BAR 引脚保持高电平。

需要快速回复。

谢谢、此致、

Janardan M

 

 

           

           

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

    [报价用户="Janardan M80"]期待快速回复。

    如此... 证明"非常好"。   也许还有其他"期望"-为您服务-甚至更进一步?

    您是否认为您的帖子在"周末"期间到达、并且(甚至)高技能供应商代理有权(部分)获得暂时休息?   您的"期望"是否会引导 "提升您的职位"、而不是所有其他职位?   (即使是在您之前到达的人(也是如此)对其作者"非常重要"?)

    那些"期待"或声称"紧急"的人最有可能引起完全相反的反应...

    你的帖子-否则-是"相当好"-直到那个 (丑陋/偏离) "期望"出现..   请以您(不再是预期)的名义提出"上述"(以下几个评论)!

    您应该"注意"、(两者)"SPI 数据从主器件输出" 和"从从器件输入"通常通过 SPI 主器件计时。   因此-从器件返回的数据-将在"下一个 SPI PUT "(通过"SPI Get"读取)时有效、而不是在"与 SPI PUT 同步"中有效-正如您的写入(显示)所建议的那样。

    您对接收到的 SPI 数据进行仔细的图表记录-如在下一个"SPI Put 的时钟"(通过 SPI Get)时返回的那样-应显示从器件的"数据响应的顺序模式"-它必须是一个时钟周期(Behind!)    (因此、从器     件有(部分)机会吸收您的"命令或数据请求"(提前到达一个 SPI PUT 周期)-然后(在下一个"SPI PUT"时)"准备好并产生响应"。

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

    您好!

    感谢您的回答、我不知道"期望"一词会使人产生很大的烦恼、我很清楚 使用这些词不会提升我的帖子。 我将确保不要在这里使用这些词。

    我知道 SPI 在发送和接收时共享相同的时钟,它充当虚拟环拓扑。

    请找到以下时序图。

    我从时序图中了解到、我需要先发送 opcode1、然后发送 opcode2、然后再接收寄存器数据。

    因此 、为了接收寄存器数据、时钟将由主器件提供、因此我发送了0x00、这将启动计时。  

    请找到以下代码作为参考。

     

    SSIDataPut (SSI0_BASE、RREG|0x01);   //选项1
    SSIDataPut (SSI0_BASE、0x00);          //操作码2.
    SSIDataPut (SSI0_BASE、0x00);          //发送虚拟数据以启动计时
    SSIDataGet (SSI0_BASE、RetVal);        //从 FIFO 读取接收到的数据

    我所了解的是 SSIDataGet API 获取了接收到的数据并将其放入 FIFO 中。  

    我的理解是错误的吗?  SSIDataGet API 是否提供从从器件接收数据所需的时钟?

    谢谢、此致、

    Janardan M

     

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

    "期望的不喜欢"的原因已经详细说明了-我们已经超越了这一点。

    您的图表清晰明了-但正确提取具有(足够)偏移(如您所示)的 SPI 数据通常需要格外小心。   通常情况下,在(每个)带有"SPIDataGet ()"的"SPIDataPut ()"之后,会为您带来优势,因为通过以下命令"SPIDataGet ()"接收到的"虚拟数据"可能会被耗尽。  

    在您的特定情况下-发送的每个"操作码"-将返回"虚拟"数据-因此您将有2个虚拟数据元素(拒绝)。   从器件的数据图显示"所需数据"-从"第三个 SPI 时钟"开始-仅通过您使用第三个"SPIDataPut ()"生成。   您(实际上)非常聪明、能够识别出这一点。   然而 、您启动的"single"-"SPIDataGet ()"将恢复"仅非法或虚拟数据"-(在您的第一个、SPIDataPut()期间由从器件发送)-不是您想要的"Reg Data"。   

    我相信您创建的"paired、SPIDataPut ()后跟 SPIDataGet ()事务"-而不是 "3 SPIDataPut () Sequence" (背靠背)-将更好地捕获 "真实/寻求"的从 SPI 数据。

    它(通常)证明最好识别最简单的从机寄存器-这使您能够"轻松且清晰地识别"从机(赦免)的"预期和/或列出的"数据响应。    通过将此类注册( 包含"已知和受保内容")作为目标 、您可以"增强您 对 "真实数据恢复"的认识"、而不是"不需要的虚拟数据"。  

    我相信、针对"kiss"的小规模、重点突出、测量的 SPI 实验(检查 SPI 接收到的数据)将建立(两者)您的信心和理解。   祝您有机会、我是 AMI……