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.

[参考译文] CCS/TMS320F28379D:CCS

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/880513/ccs-tms320f28379d-ccs

器件型号:TMS320F28379D

工具/软件:Code Composer Studio

你好

如何更改 LOSPCP (LSPCLKDIV) 默认值???

注册表是否需要保护?

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

    Saeed、

    系统控制寄存器受 EALLOW 保护。  要进行修改、您需要执行以下操作:

    asm (" EALLOW");      //启用 EALLOW 受保护寄存器访问

    在此处修改寄存器...

    asm (" EDIS");      //禁用 EALLOW 受保护寄存器访问

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken

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

    您好 Ken Schachter

    我使用了示例 ti 中的此代码,但我不知道我是否正确设置了代码  ClkCfgRegs.LOSPP.bit.LSPCLKDIV =0x0001;或者您是否可以检查代码??
    我将 波特率设置为4800。  是这样吗??
    请将此信分发为荷



    /**
     * main.c
     *
    //######################################################################################################################
    //
    //文件:   example_2837xDSci_FFDLB.c
    //
    //标题:  SCI FIFO 数字回路测试。
    //
    //! addtogroup cpu01_example_list
    //!

    SCI FIFO 数字回路测试(sci_looback)


    //!
    //!  该程序使用外设的内部回路测试模式。
    //!  而不是引导模式引脚配置、没有其他硬件配置
    //!  要求。
    //!
    //!  此测试使用 SCI 模块的回送测试模式进行发送
    //!  字符从0x00到0xFF 不等。  测试将发送
    //!  字符、然后检查接收缓冲区是否匹配正确。
    //!
    //!  b 监视\b 变量\n
    //!  -\b 循环计数-发送的字符数
    //!  -\b 错误计数-检测到的错误数量
    //!  -\b SendChar -字符已发送
    //!  -\b 接收字符-接收字符
    //!
    //
    //######################################################################################################################
    //$TI 发行版:F2837xD 支持库 v3.06.00.00 $
    //$Release Date:Mon May 27 06:48:24 CDT 2019 $
    //版权所有:
    //版权所有(C) 2013-2019德州仪器(TI)公司- http://www.ti.com/
    //
    //以源代码和二进制形式重新分发和使用,有无
    //如果满足以下条件,则允许进行修改
    //满足:
    //
    //  重新分发源代码必须保留上述版权
    //  注意、此条件列表和以下免责声明。
    //
    //  二进制形式的重新分发必须复制上述版权
    //  注意、中的条件列表和以下免责声明
    //  随提供的文档和/或其他材料
    //  分布。
    //
    //  德州仪器公司的名称和的名称都不是
    //  其贡献者可用于认可或推广衍生产品
    //  未经特定的事先书面许可,从该软件下载。
    //
    //本软件由版权所有者和作者提供
    //“原样”以及任何明示或暗示的保证,包括但不包括
    //限于对适销性和适用性的暗示保证
    //一个特定的目的是免责的。 在任何情况下、版权均不得
    //所有者或贡献者应对任何直接、间接、偶然、
    //特殊、典型或必然的损害(包括但不包括)
    //仅限于采购替代货物或服务;
    //数据或利润;或业务中断)
    //责任理论,无论是合同责任、严格责任还是侵权行为
    //(包括疏忽或其他)以任何方式因使用而产生
    //此软件,即使已被告知可能会发生此类损坏。
    //$
    //######################################################################################################################
    //
    //包含的文件
    //
    #include "F28x_Project.h"
    //
       #define CPU_FREQ       200E6
       #define LSPCLK_FREQ    CPU_FREQ/2
       #define SCI_FREQ       2603
       #define SCI_PRD        ((LSPCLK_FREQ/(SCI_FREQ*8))-1)
    //全局
    //
    uint16环计数;
    UINT16错误计数;
    //
    //函数原型
    //
    void scia_loopback_init (void);
    void scia_fifo_init (void);
    void scia_xmit (int a);
    void error();
    //
    //主函
    //
    void main (void)

       uint16 SendChar;
     //  uint16 ReceivedChar;
       EALLOW;
         ClkCfgRegs.LOSPP.bit.LSPCLKDIV =0x0001;
       EDIS;
    //
    //步骤1. 初始化系统控制寄存器、PLL、看门狗、到的时钟
    //默认状态:
    //此函数位于 F2837xD_SYSCTRL.c 文件中。
    //
       InitSysCtrl();
    //
    //步骤2. 初始化 GPIO:
    //此示例函数位于 F2837xD_GPIO.c 文件和中
    //说明了如何将 GPIO 设置为其默认状态。
    //
      InitGpio();
    //
    //对于这个示例、只初始化针对 SCI-A 端口的引脚。
    // GPIO_SetupPinMux ()-设置 GPxMUX1/2和 GPyMUX1/2寄存器位
    // GPIO_SetupPinOptions ()-设置 GPIO 的方向和配置
    //这些函数可在 F2837xD_GPIO.c 文件中找到。
    //
      //GPIO_SetupPinMux (28、GPIO_MUX_CPU1、1);
     // GPIO_SetupPinOptions (28、GPIO_INPUT、GPIO_PushPull);
      GPIO_SetupPinMux (29、GPIO_MUX_CPU1、1);
      GPIO_SetupPinOptions (29、GPIO_OUTPUT、GPIO_异 步);
    //
    //步骤3. 初始化 PIE 矢量表:
    // PIE 矢量表初始化为 shell 中断指针
    //服务例程(ISR)。  shell 例程位于 F2837xD_DefaultIsr.c 中
    //在中的相应 shell ISR 例程中插入用户特定的 ISR 代码
    // F2837xD_DefaultIsr.c 文件。
    //
    //
    //禁用并清除所有 CPU __interrupts:
    //
       Dint;
       IER = 0x0000;
       IFR = 0x0000;

    //
    //将饼图控制寄存器初始化为默认状态:
    //此函数位于 F2837xD_PIECTRL.c 文件中。
    //
    // InitPieCtrl(); //pie 不用于此示例

    //
    //将 PIE 矢量表初始化为已知状态:
    //此函数可在 F2837xD_PieVect.c 中找到
    //此函数使用指针填充 PIE 矢量表
    //转至 F2837xD_DefaultIsr.c 中的 shell ISR 函数
    //
       InitPieVectTable();

    //
    //启用 CPU 和 PIE __interrupts
    //此示例函数位于 F2837xD_PIECTRL.c 文件中。
    //
       EnableInterrupts();

    //
    //步骤4. 特定于用户的函数、重新分配矢量(可选)、
    //启用中断:
    //
       LoopCount = 0;
       错误计数= 0;

       scia_fifo_init();      //初始化 SCI FIFO
       scia_loopback_init (); //初始化用于数字回路的 SCI

       //
       //注意:此示例不需要自动波特率锁定
       //

    //
    //发送以0开头的字符
    //
       SendChar = 0;

    //
    //步骤5. 从0x00开始一直发送字符、然后继续
    // 0xFF。  发送每个数据后、检查接收缓冲区的值是否正确
    //
     // uint16 i=0;
       for (;;)
       {// SendChar=!SendChar;
         // delay_US (100000);
          scia_xmit (SendChar);
         //中断;
          }

          //
          //等待 RRDY/RXFFST =1、等待 FIFO 中有1个数据可用
          //
        // while (SciaRegs.SCIFFRX.bit.RXFFST = 0){}
          //
          //检查接收到的字符
          //
         /* ReceivedChar = SciaRegs.SCIRXBUF.all;
          if (ReceivedChar!= SendChar)
          {
              error();
          }

          //
          //移动到下一个字符并重复测试
          //
          SendChar++;

          //
          //将字符限制为8位
          //
          SendChar &= 0x00FF;
          LoopCount++;
       }*/


    //
    //错误-计算错误的函数
    //
    /*void 错误()

       错误计数++;
    //  asm ("    ESTOP0"); //取消注释以在此处停止测试
    //  表示(;;);
    }*/

    //
    // scia_loopback_init -配置 SCIA 设置
    //
    void scia_loopback_init ()

       //
       //注意:SCIA 外设的时钟被打开
       //在 InitSysCtrl()函数中
       //
       ////////////////////////////////////////


       SciaRegs.SCICCR.all = 0x0007; // 1停止位, 无回路
                                      //无奇偶校验,8个字符位,
                                      //异步模式,空闲线协议
       SciaRegs.SCICTL1.all = 0x0003;//启用 TX、RX、内部 SCICLK、
                                      //禁用 RX ERR、睡眠、TXWAKE
       SciaRegs.SCICTL2.all = 0x0003;
       SciaRegs.SCICTL2.bit.TXINTENA=1;
       SciaRegs.SCICTL2.bit.RXBKINTENA=1;
       //SciaRegs.SCIHBAUD.ALL = 0x002B;
       //SciaRegs.SCILBAUD.ALL = 0x000A;
       SciaRegs.SCIHBAUD.ALL =((uint16_t) SCI_PRD 和0xFF00U)>> 8U;
       SciaRegs.SCILBAUD.ALL =(uint16_t) SCI_PRD 和0x00FFU;
       SciaRegs.SCICCR.bit.LOOPBKENA=0;//启用回路
       SciaRegs.SCICTL1.all = 0x0023;    //从复位中撤回 SCI
     }

    //
    // scia_xmit -从 SCI 发送一个字符
    //
    void scia_xmit (int a)

       SciaRegs.SCITXBUF.All=A;


    //
    // scia_fifo_init -初始化 SCI FIFO
    //
    void scia_fifo_init()

       SciaRegs.SCIFFTX.ALL = 0xE040;
       SciaRegs.SCIFFRX.ALL = 0x2044;
       SciaRegs.SCIFFCT.all = 0x0;


    //
    //文件结束
    //


    我已经编写了此代码、但不确定是否正确

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

    Saeed、

     用于修改 LOSPCP 的结构是正确的。  随附的示例代码和您修改的代码之间的比较报告。  作为建议、请从我们的示例代码开始、 并在测试代码之间一次进行一组更改。  这将帮助您确定发生错误的位置和位置。  当将时钟设置更改为外设时、请确保不会超过外设的最大时钟值。   在代码中、我注意到您禁用了回送并更改了时钟设置。  尝试在 启用回送的情况下调整代码(时钟)、以查看是否可以使其正常工作。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken

    /cfs-file/__key/communityserver-discussions-components-files/171/2045.Report.html

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

    Saeed、

    我上次听说过您、已经有一段时间了。 因此、我假设我的上次答复解决了您的问题、我将关闭此主题。 如果情况并非如此,请拒绝此解决方案或回复此主题。 如果此主题被锁定、请制作一个描述问题当前状态的新主题。 谢谢你。

    - Ken