打印

请问为啥28335的SCIA的TI官方例程无法和串口调试工具通信啊?

[复制链接]
1125|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Redbeannnnnn|  楼主 | 2019-10-28 11:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例程是TI官网下载的,我把28335板子通过RS232连接到电脑上,想着通过串口调试助手进行收发数据测试,可是串口调试助手上什么都没有- -(PS:YS提供的SCI程序就可以正常通信,我看两者程序配置好像差不多)
void main(void)
{
    Uint16 ReceivedChar;
    char *msg;

// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP2833x_SysCtrl.c file.
   InitSysCtrl();

// Step 2. Initialize GPIO:
// This example function is found in the DSP2833x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.
   // InitGpio(); Skipped for this example

// For this example, only init the pins for the SCI-A port.
// This function is found in the DSP2833x_Sci.c file.
   InitSciaGpio();

// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts
   DINT;

// Initialize PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.
// This function is found in the DSP2833x_PieCtrl.c file.
   InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:
   IER = 0x0000;
   IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt
// Service Routines (ISR).
// This will populate the entire table, even if the interrupt
// is not used in this example.  This is useful for debug purposes.
// The shell ISR routines are found in DSP2833x_DefaultIsr.c.
// This function is found in DSP2833x_PieVect.c.
   InitPieVectTable();

// Step 4. Initialize all the Device Peripherals:
// This function is found in DSP2833x_InitPeripherals.c
// InitPeripherals(); // Not required for this example

// Step 5. User specific code:

    LoopCount = 0;
    ErrorCount = 0;

    scia_fifo_init();           // Initialize the SCI FIFO
    scia_echoback_init();  // Initialize SCI for echoback

    msg = "\r\n\n\nHello World!\0";
    scia_msg(msg);

    msg = "\r\nYou will enter a character, and the DSP will echo it back! \n\0";
    scia_msg(msg);

        for(;;)
    {
       msg = "\r\nEnter a character: \0";
       scia_msg(msg);

       // Wait for inc character
       while(SciaRegs.SCIFFRX.bit.RXFFST !=1) { } // wait for XRDY =1 for empty state
       //while(SciaRegs.SCIRXST.bit.RXRDY !=1) { }

       // Get character
       ReceivedChar = SciaRegs.SCIRXBUF.all;

       // Echo character back
       msg = "  You sent: \0";
       scia_msg(msg);
       scia_xmit(ReceivedChar);

       LoopCount++;
    }
}

// Test 1,SCIA  DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity
void scia_echoback_init()
{
    // Note: Clocks were turned on to the SCIA peripheral
    // in the InitSysCtrl() function

        SciaRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback
                                   // No parity,8 char bits,
                                   // async mode, idle-line protocol
        SciaRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                   // Disable RX ERR, SLEEP, TXWAKE
        SciaRegs.SCICTL2.all =0x0003;
        SciaRegs.SCICTL2.bit.TXINTENA =1;
        SciaRegs.SCICTL2.bit.RXBKINTENA =1;
        #if (CPU_FRQ_150MHZ)
              SciaRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 37.5MHz.
              SciaRegs.SCILBAUD    =0x00E7;
        #endif
        #if (CPU_FRQ_100MHZ)
      SciaRegs.SCIHBAUD    =0x0001;  // 9600 baud @LSPCLK = 20MHz.
      SciaRegs.SCILBAUD    =0x0044;
        #endif
        SciaRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset
}

// Transmit a character from the SCI
void scia_xmit(int a)
{
    while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
   // while (SciaRegs.SCICTL2.bit.TXRDY == 0) {}
    SciaRegs.SCITXBUF=a;
}

void scia_msg(char * msg)
{
    int i;
    i = 0;
    while(msg[i] != '\0')
    {
        scia_xmit(msg[i]);
        i++;
    }
}

// Initialize the SCI FIFO
void scia_fifo_init()
{
    SciaRegs.SCIFFTX.all=0xE040;
    SciaRegs.SCIFFRX.all=0x204f;
    SciaRegs.SCIFFCT.all=0x0;
}

使用特权

评论回复

相关帖子

沙发
Redbeannnnnn|  楼主 | 2019-10-28 11:36 | 只看该作者
研究了两天了,小白真的伤不起啊,导师还让我做电机驱动,我连模块基本功能都跑不起来- -

使用特权

评论回复
板凳
zhangmangui| | 2019-10-28 22:36 | 只看该作者
从功能看    就是收到什么 上发什么    用串口助手发送数据  看看能不能接收到

使用特权

评论回复
地板
zhangmangui| | 2019-10-28 22:37 | 只看该作者
电机控制做好必须要对C2000的外设做详细研究  结合数据手册研究
下载controlSUITE等TI的工具包

使用特权

评论回复
5
蒋博1026| | 2019-10-30 20:39 | 只看该作者
还是先搞清楚电机驱动的原理吧,原理搞懂了,后边就会轻松点

使用特权

评论回复
6
蒋博1026| | 2019-10-30 20:40 | 只看该作者
我还没用过DSP来搞电机的驱动,多看看数据手册吧,这种事也不能急

使用特权

评论回复
7
蒋博1026| | 2019-10-30 20:41 | 只看该作者
我之前只用过stm32做过控制电机,但是感觉原理应该是一样的,

使用特权

评论回复
8
蒋博1026| | 2019-10-30 20:42 | 只看该作者
stm32实现电机驱动,原理和DSP应该一样,只是实现的方式和实现的平台不一样

使用特权

评论回复
9
pengyoujianxiao| | 2019-11-6 14:19 | 只看该作者
学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

34

帖子

0

粉丝