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.

[参考译文] TMS320F28027:从主器件到从器件的 R/W 命令

Guru**** 2471680 points
Other Parts Discussed in Thread: TMS320F28027, TMS320F28377S, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/869869/tms320f28027-r-w-command-from-master-to-slave

器件型号:TMS320F28027
主题中讨论的其他器件: TMS320F28377SC2000WARE

我的主控制器是 TMS320F28377、从控制器是 TMS320F28027。

我想从从从器件读取数据。 如何将读取命令从主器件发送到从器件,以便从器件充当从器件发送器?

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

    由于假期、您可以在几天内收到回复。

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

    有人能告诉我从接收器和从发送器的流程吗?

    谢谢、

    Vrushali Jangam。

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

    Vrushali、

    主控制器和从控制器通过什么接口进行交互? 它是 I2C/SPI...还有其他吗?

    Srinivasa

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

    您好、先生、

    我在两个微控制器之间使用 I2C 接口。 TMS320F28377S 是主器件、TMS320F28027是从器件。 我已成功执行主发送器和从接收器部分。 从器件接收多个字节并将其存储在阵列中。

    我的下一个任务是实现主接收器和从发送器部分。 在本节中、我能够将读取查询发送到从器件。 从机接收查询并进入发送中断。 在这里、我可以看到从器件的发送缓冲区填满了我要发送的数据、但 SDA 线上没有任何数据。 相反、SDA 和 SCL 线路都保持低电平。

    谢谢、此致、

    Vrushali Jangam。

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

    您好、Vrushali、

    您在使从器件开始传输、然后使主器件接收的代码中有何区别?

    您可以使用以下代码片段作为参考。  此初始化代码可用于外部回送、主器件作为接收器件、从器件作为发送器件。

    忽略有关 RX/TX 的注释。  

    基准代码是  

    C2000Ware0\driverlib\f2837xd\examples\cpu1\i2c\i2c_ex3_external_loopback.c

    void initI2CFIFO()
    {
    //
    //必须在配置 I2C 之前将其复位
    //
    I2C_DisableModule (I2CA_BASE);
    I2C_DisableModule (I2CB_BASE);
    
    //
    // I2C 配置。 使用占空比为50%的400kHz I2CCLK。
    //
    I2C_initMaster (I2CA_BASE、DEVICE_SYSCLK_FREQ、400000、I2C_DUTYCYCLE _50);
    I2C_setConfig (I2CA_BASE、I2C_MASTER_Receive_MODE);
    
    I2C_setDataCount (I2CA_BASE、2);
    I2C_setBitCount (I2CA_BASE、I2C_BITCOUNT_8);
    
    //
    // I2C 从器件配置
    //
    I2C_setConfig (I2CB_BASE、I2C_SLAVE_SEND_MODE);
    
    I2C_setDataCount (I2CB_BASE、2);
    I2C_setBitCount (I2CB_BASE、I2C_BITCOUNT_8);
    
    //
    //配置外部回送
    //
    I2C_setSlaveAddress (I2CA_BASE、SLAVE_ADDRESS);
    I2C_setOwnSlaveAddress (I2CB_BASE、SLAVE_ADDRESS);
    I2C_setEmulationMode (I2CA_BASE、I2C_emulation_free_run);
    I2C_setEmulationMode (I2CB_BASE、I2C_emulation_free_run);
    
    //
    // FIFO 和中断配置
    //
    I2C_enableFIFO (I2CA_BASE);
    I2C_clearInterruptStatus (I2CA_BASE、I2C_INT_RXFF);
    
    //
    //发送 FIFO 中断级别被设置为生成中断
    // 16字节 TX FIFO 包含2个或更少字节的数据。
    //
    I2C_setFIFOInterruptLevel (I2CA_BASE、I2C_FIFO_TX2、I2C_FIFO_RX2);
    I2C_enableInterrupt (I2CA_BASE、I2C_INT_RXFF | I2C_INT_STOP_Condition);
    
    I2C_enableFIFO (I2CB_BASE);
    I2C_clearInterruptStatus (I2CB_BASE、I2C_INT_TXFF);
    
    //
    //接收 FIFO 中断级别被设置为生成中断
    // 16字节 RX FIFO 包含2个或更大字节的数据。
    //
    I2C_setFIFOInterruptLevel (I2CB_BASE、I2C_FIFO_TX2、I2C_FIFO_RX2);
    I2C_enableInterrupt (I2CB_BASE、I2C_INT_TXFF | I2C_INT_STOP_Condition);
    
    //
    //配置完成。 启用模块。
    //
    I2C_enableModule (I2CA_BASE);
    I2C_enableModule (I2CB_BASE);
    } 

    此致。

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

    您好、Meghana、

    感谢你的答复。

    现在、我能够在主机端接收数据、但它只会执行一次。 我要附加从器件第一次传输时所获取的波形的快照。

    从波形中、我可以观察到虚拟写入和从 id +读取命令正常。 红色圆圈突出显示的部分位于主器件发送从器件 ID +读取命令之后。 之后、观察到从器件发送的延迟数据。

    当主器件发送下一个读取命令时、SDA 和 SCL 在主器件在假写入后发送从器件 ID+读取命令后保持低电平。

    请帮助我获取从发送器和从接收器示例代码。

    谢谢、此致、

    Vrushali Jangam。

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

    您好、Vrushali、

    当您在 CCS 窗口中检查 TX 和 Rx 数据的变量时,您是否看不到增加?

    我们提供的所有示例如下:

    C2000Ware\driverlib\f2837xd\examples\cpu1\i2c

    此致。