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.

[参考译文] AFE4490:无法从 AFE4490读取寄存器

Guru**** 2597475 points
Other Parts Discussed in Thread: AFE4490

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/601008/afe4490-unable-to-read-register-from-afe4490

器件型号:AFE4490

您好!

    我将 AFE4490与 Kinetis 微控制器连接。当我尝试从寄存器读回时、我将获得零数据。我看到了固件源代码和消息通信协议 pdf。在其中、他们提到使用数据包读取寄存器。能否有人解释我是否必须发送该数据 要通过 SPI 协议从寄存器读取 PCet、或者我必须发送整个数据包才能读回。我在写入寄存器时遇到同样的问题。任何人都会说这个过程。

提前感谢。

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

    首先让我们使寄存器写入工作。
    如果您有自己的微控制器,则无需遵循消息协议。
    您只需生成数据表中提到的 SPI 信号即可进行寄存器读取/写入。

    此致、
    Prabin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Prabin、您好!
    我使用代码进行了检查。我的数据不会被写入。我禁用了 SPI_READ 并对一个寄存器进行了更改、并启用 SPI_READ、读回该寄存器。这是我要遵循的过程。我使用了时钟频率为4Mhz、并使用了模式0操作。但它仍然不起作用。您能说出的过程 测试 afe4490。谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Kanimozhi、

    您能否仔细检查电源以及 AFE_PDN 和复位信号?
    您还可以共享 SPI 信号的模拟波形吗?

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

           Prabin、您好!

        我已经连接了 SPI 波形。首先我没有使用 ADC_rdy、PDN 和 RESET、只是我尝试使 SPI it.interfacing 与我的控制器一起工作、并在代码中写入1寄存器中使用 SPI_Read=0、然后使用 SPI_Read =1将其读回。这本身对我不起作用。我正在使用模式0和 4MHz。当我使用4MHz 时、我无法在逻辑分析仪中看到数据、因此我有固定的时钟。在数据表中、他们提到您必须使用4MHz 的顺序读取寄存器。所以、请澄清我要使用的时钟。我尝试写入的值不会写入寄存器。这会很好 如果已解决。谢谢。

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

    /*
    *文件:hello_world.c
    *目的:主要过程
    *
    *

    /*
    该项目旨在使用 SPI 将 ADXL362与 K53n512控制器连接
    协议
    K53有3个 SPI 协议、我们使用的是 SPI0
    *

    #include "common.h"


    #define GPIO_PIN_MASK 0x1FU
    #define GPIO_PIN (x)(((1)<<(x 和 GPIO_PIN_MASK))
    #define CONTROL0 0x00
    #define LEDCNTRL 0x22
    #define TIAGAIN 0x20
    #define TIA_AMB_GAIN 0x21

    //#define TEST_LOW GPIO_PDOR&=~GPIO_PDOR_PDO (GPIO_PIN (8))//调试引脚
    //#define TEST_HIGH GPIO_PDOR|=GPIO_PDOR_PDO (GPIO_PIN (8))//调试引脚

    /*函数原型*/
    void SPI_init();
    void SPI_write (uint8、uint32);
    uint32 spi_read (uint8);
    void time_delay_ms (unsigned int count_val);
    uint8 SPI_byte_io (uint32数据);

    void main (void)

    printf ("\n 具有 afe 的 SPI 接口\n");
    spi_init();
    while (1)


    SPI_WRITE (0x00、0x000000);
    SPI_WRITE (0x20、0x000004);
    SPI_WRITE (0x00、0x000001);
    SPI_READ (0x20);

    /*此处使用的 SPI 是主模式下的 SPI0、SPI 时钟禁用 FIFO、FIFO 的清零计数器、帧大小8、
    波特率、上升沿上的时钟相位、非活动 STAS 高电平、使用 CTAR1、因为在主控模式下、MSB 优先、
    打盹模式被禁用、连续时钟被激活
    *

    在主控模式中 void SPI_init ()//SPI 初始化

    SIM_SCGC6 |= SIM_SCGC6_DSPI0_MASK;//启用 SPI0的时钟
    SIM_SCGC5 =(SIM_SCGC5_PORta_mask)|(SIM_SCGC5_PORTB_mask);//启用到 Porta 的时钟

    PORTA_PCR14 |= PORT_PCR_MUX (2);//将 SPI0功能(PCS0)的 MUX 值设置为2
    //Porta_PCR15 &&=~PORT_PCR_MUX_MASK;
    PORTA_PCR15 |= PORT_PCR_MUX (2);//为 SPI0功能(SCK)将 MUX 值设置为2
    //Porta_PCR16 &&~PORT_PCR_MUX_MASK;
    PORTA_PCR16 |= PORT_PCR_MUX (2);//为 SPI0功能(SOUT)将 MUX 值设置为2
    // Porta_PCR17 &&=~PORT_PCR_MUX_MASK;
    PORTA_PCR17 |= PORT_PCR_MUX (2);//为 SPI0功能(SIN)将 MUX 值设置为2

    //主控模式、连续时钟生成、peri 芯片选择信号、当 Rx 数据溢出覆盖移位寄存器时、所有芯片选择使用高电平信号来停用、打盹模式被禁用、ENALbe DSPI 时钟一直并且不受外部数字引脚控制、TX 和 Rx 被启用

    // SPI0_MCR =((SPI_MCR_HALT_MASK)|(SPI_MCR_MDI_MASK & 0x00);
    // SPI0_MCR =(SPI_MCR_DIS_TXF_MASK)|(SPI_MCR_MSTR_MASK)|(SPI_MCR_DIS_RXF_MASK)|(SPI_MCR_ROOE_MASK)|(SPI_MCR_DCONF (0x00))|SPI_MCR_SCR_SIR_SCK_MASK (SPI_CONT_PCR_MASK)|(SPI_MCR_SCR_MASK);SPI_MCR_SPI_CK_SION
    // SPI0_CTADR0 =(SPI_CTAR_DBR_MASK 和0x00)|(SPI_CTAR_FMSZ (0xF)|(SPI_CTAR_PDT (0x00))|(SPI_CTAR_BR (1))|(SPI_CTAR_CMSK (0x02)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR) 0X0X0_SCAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR) 0X0X0X0X0_CCAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|
    SPI0_MCR =((SPI_MCR_HALT_MASK)|(SPI_MCR_MDI_MASK & 0x00));
    SPI0_MCR =(SPI_MCR_DIS_TXF_MASK)|(SPI_MCR_MSTR_MASK)|(SPI_MCR_DIS_RXF_MASK)|(SPI_MCR_ROOE_MASK)|(SPI_MCR_DCONF (0x00))|SPI_MCR_SCK_SCKE_SIS_MASK (SPI_MOR_MASK)|(SPI_MCR_PCR63_MASK);(SPI_MCR_MCR_SI
    SPI0_CTAR0 =(SPI_CTAR_DBR_MASK 和0x00)|(SPI_CTAR_FMSZ (0x07))|(SPI_CTAR_PDT (0x00)|(SPI_CTAR_BR (0x07))|(SPI_CTAR_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR) 0X0X0_PCAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR) 0X0X0X0X0_PCAR)|(SPI_CTAR (SPI_CTAR)|(SPI_CTAR)|(SPI_CTAR)(SPI_CTAR)|(SPI_CTAR


    // SPI0_PUSHR |=(SPI_PUSHR_PCS (0<0));
    // SPI0_MCR &= 0xfffffffe;//重新开始传输


    /*函数 memory_write()一次将数据写入内存一个字节*/

    /*void SPI_write (uint8地址、uint32数据)

    SIM_SCGC6 |=SIM_SCGC6_DSPI0_MASK;
    uint8 d1、d2、d3;
    uint8 du1、d2、d3、du4 = 0;

    D3=((DATA>>>16)&(0x0000FF);
    D2=((DATA>>>8)&(0x0000FF));
    D1=(DATA & 0x0000FF);

    //test_low;
    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (地址);

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));
    DU1=SPI0_popr;
    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;
    printf ("发送地址时为虚拟:%x\n"、du1);

    //data3.
    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (D3);

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));
    DU2=SPI0_popr;
    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;
    printf ("发送 MSB 时为虚拟:%x\n"、du2);

    //data2.
    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (D2);

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));
    dut3=SPI0_popr;
    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;
    printf ("中间发送时为虚拟:%x\n"、du3);

    //data1
    SPI0_PUSHR =(SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK_0x00)|(SPI_PUSHR_EOQ_MASK)|(SPI_PUSHR_TXDATA (D1));
    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));
    DU4=SPI0_popr;
    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;
    printf ("发送 lsb 时为虚拟:%x\n"、du4);
    //test_high;
    printf ("写入 Addrs %x:%x\n"、地址、数据);


    }*/

    /*function memory_read()从内存中一次读取一个字节的数据*/

    /*uint32 SPI_read (uint8地址)

    uint8 RD1=0、RD2=0、读数3=0;
    无符号长整型返回值=0;
    //test_low;
    //地址
    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (地址);

    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));
    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    //data3.
    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)|SPI_PUSHR_TXDATA (0x00));

    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));
    RD1=SPI0_popr;
    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    printf ("data3:%x\n"、RD1);

    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)|SPI_PUSHR_TXDATA (0x00));

    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));
    RD2=SPI0_popr;
    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    printf ("data2:%x\n"、RD2);

    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_EOQ_MASK)|(SPI_PUSHR_CONT_MASK 和0x00)| SPI_PUSHR_TXDATA (0x00);

    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));
    rd3=SPI0_popr;
    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    printf ("data1:%x\n"、rd3);
    //test_high;
    RetVal|= RD1;
    RetVal =((RetVal << 8)|RD2);
    RetVal =((RetVal <<8)|rd3);
    printf ("从 Addr 读取的数据:%x\n"、RetVal);
    返回 RetVal;

    }*/

    /*使用 LPTMR 模块的延迟功能*/

    void time_delay_ms (unsigned int count_val)

    SIM_SCGC5|=SIM_SCGC5_LPTIMER_MASK;//打开 LPTMR 模块的时钟
    LPTMR0_CMR = COUNT_val;//设置比较值
    LPTMR0_PSR = LPTMR_PSR_PCS (1)|LPTMR_PSR_PBYP_MASK;//使用1kHz LPO 时钟和旁路预分频器
    LPTMR0_CSR |= LPTMR_CSR_TED_MASK;//开始计数

    while (!(LPTMR0_CSR 和 LPTMR_CSR_TCF_MASK)){}//等待计数器达到比较值

    LPTMR0_CSR &&~LPTMR_CSR_TED_MASK;//清除计时器比较标志
    返回;


    //由于您显然不关心时间效率,因此将基本字节 I/O 放入一个小程序中会有所帮助:

    /*uint8 SPI_byte_io (uint32 data){
    uint8评估;
    SPI0_PUSHR =数据;
    // while (!(!(SPI0_SR & SPI_SR_TFFF_MASK)){}//您不需要在 TX-Empty 上旋转
    //因为 RX 已满将始终"一位后"
    while (!(SPI0_SR & SPI_SR_RFDF_MASK)){}//等待 RX FIFO 不为空
    // while (!(!(SPI0_SR & SPI_SR_EOQF_MASK)){}//无意义...
    RetVal = SPI0_popr;
    // SPI0_SR = SPI_SR_EOQF_MASK;//清除 EOQF 标志
    SPI0_SR = SPI_SR_TFFF_MASK;
    SPI0_SR = SPI_SR_RFDF_MASK;
    返回评估;

    void SPI_write (uint8 MSTR_val、uint32 data){
    // SIM_SCGC6 |=SIM_SCGC6_DSPI0_MASK;//目前不需要!
    uint8 d1、d2、d3;
    uint8 dummy_rx=0;
    uint32 chk_data=0;
    D3=((DATA>>>16)&(0x0000FF);
    D2=((DATA>>>8)&(0x0000FF));
    D1=(DATA & 0x0000FF);
    虚拟 Rx = SPI_BYTE_IO ((SPI_PUSHR_TXDATA (MSTR_Val))| SPI_PUSHR_CONT_MASK | SPI_PUSHR_PCS (0x01));
    虚拟 Rx = SPI_BYTE_IO ((SPI_PUSHR_TXDATA (D3))| SPI_PUSHR_CONT_MASK | SPI_PUSHR_PCS (0x01));
    虚拟 Rx = SPI_BYTE_IO ((SPI_PUSHR_TXDATA (D2))| SPI_PUSHR_CONT_MASK | SPI_PUSHR_PCS (0x01));
    虚拟 Rx = SPI_BYTE_IO ((SPI_PUSHR_TXDATA (D1)))|(SPI_PUSHR_CONT_MASK_0x00)| SPI_PUSHR_PCS (0x01));
    chk_data=(D3<<16)|(D2<8)|D1;
    printf ("写入 Addrs 的数据:%x\n"、chk_data);


    uint32 SPI_read (uint8地址){
    // SIM_SCGC6 |=SIM_SCGC6_DSPI0_MASK;//目前不需要!
    uint8 d1、d2、d3;
    uint8 dummy_rx=0;
    uint32 chk_data=0;
    // D3=((data>>16)&(0x0000FF);
    // d2=((data>>8)&(0x0000FF));
    //D1=(DATA & 0x0000FF);
    虚拟 Rx = SPI_BYTE_IO ((SPI_PUSHR_TXDATA (地址))| SPI_PUSHR_CONT_MASK | SPI_PUSHR_PCS (0x01));
    D3= SPI_BYTE_IO ((SPI_PUSHR_TXDATA (0))| SPI_PUSHR_CONT_MASK | SPI_PUSHR_PCS (0x01));
    D2 = SPI_BYTE_IO ((SPI_PUSHR_TXDATA (0))| SPI_PUSHR_CONT_MASK | SPI_PUSHR_PCS (0x01));
    D1 = SPI_BYTE_IO ((SPI_PUSHR_TXDATA (0)))|(SPI_PUSHR_CONT_MASK_0x00)| SPI_PUSHR_PCS (0x01));
    chk_data=((D3&0x3F)<<16)|(D2<8)|D1;
    printf ("从 Addr 读取的数据:%x\n"、chk_data);
    返回 chk_data;
    }*/


    空 SPI_WRITE (uint8地址、uint32数据)

    SIM_SCGC6 |=SIM_SCGC6_DSPI0_MASK;
    uint8 d1、d2、d3;
    uint8 du1、d2、d3、du4 = 0;

    D3=((DATA>>>16)&(0x0000FF);
    D2=((DATA>>>8)&(0x0000FF));
    D1=(DATA & 0x0000FF);

    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (地址);

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));
    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));

    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;

    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (D3);

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));
    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));

    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;
    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (D2);

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));
    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));

    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;

    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (0x00))|(SPI_PUSHR_CONT_MASK & 0x00)|(SPI_PUSHR_EOQ_MASK)| SPI_PUSHR_TXDATA (D1);

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));
    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));

    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;
    printf ("向 Addrs 写入数据:%x\n"、data);

    /*function memory_read()从内存中一次读取一个字节的数据*/

    uint32 SPI_read (uint8地址)

    SIM_SCGC6 |=SIM_SCGC6_DSPI0_MASK;
    uint8 RD1=0、RD2=0、读数3=0;
    无符号长整型返回值=0;

    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (地址);

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));

    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));


    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;
    printf ("从 MSB 读取的数据:%x\n"、rd3);
    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (0x00));

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));

    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));
    rd3=SPI0_popr;

    SPI0_SR|= SPI_SR_RFDF_MASK;
    SPI0_SR|= SPI_SR_RFIF_MASK;

    SPI0_SR|= SPI_SR_TCF_MASK;
    SPI0_SR|= SPI_SR_TFFF_MASK;
    printf ("中间读取的数据:%x\n"、RD2);
    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (63))|(SPI_PUSHR_CONT_MASK)| SPI_PUSHR_TXDATA (0x00));

    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));

    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));
    RD2=SPI0_popr;

    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;
    printf ("数据读取框架 lsb:%x\n"、RD1);

    SPI0_PUSHR =((SPI_PUSHR_CTA (0x00))|(SPI_PUSHR_PCS (0x00))|(SPI_PUSHR_EOQ_MASK)|(SPI_PUSHR_CONT_MASK & 0x00)| SPI_PUSHR_TXDATA (0x00);
    while ((((SPI0_SR & SPI_SR_TCF_MASK)= 0));

    while ((((SPI_SR_RFDF_MASK & SPI0_SR)= 0));
    RD1=SPI0_popr;

    SPI0_SR |= SPI_SR_RFDF_MASK;
    SPI0_SR |= SPI_SR_RFIF_MASK;

    SPI0_SR |= SPI_SR_TCF_MASK;
    SPI0_SR |= SPI_SR_TFFF_MASK;


    RetVal|= RD1;
    RetVal =((RetVal << 8)|RD2);
    RetVal =((RetVal <<8)|rd3);
    printf ("从 Addr 读取的数据:%x\n"、RetVal);
    返回 RetVal;

    寄存器、我对其进行了更改并尝试读取  

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

    您好!

       您能不能说 afe4490中应该使用的时钟频率?

    谢谢你。

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

    查看波形、我有以下评论。
    1) 1) SPISTE 行在第三个字节后被拉为高电平、而它应该在超过4个字节(1个寄存器地址、3个数据字节)内为低电平。 有关 SPI 事务、请参阅数据表中的图1和图2。
    2) 2)在读取寄存器时、必须生成4个字节(1个寄存器地址、3个数据字节)的 SCLK。 在波形中、SCLK 仅用于一个字节。

    此致、
    Prabin