hwbfc 发表于 2010-10-22 11:15:40

求助坛友,BF533 UART DMA向外发数不成功,已经困死几个礼拜了

刚开始学DSP,用的是ADI的blackfin533,感觉资料好少啊,这两个礼拜就一直盯着533的datasheet看,晕死!盼坛中高手帮下小弟,拜谢!


第一个图是程序,第二个图是寄存器
http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_591874QE9MTI.jpg
BF533的串口程序 (原文件名:2010-10-21 15.32.21.jpg)

http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_591875RGB3D4.jpg
寄存器的值 (原文件名:2010-10-21 15.33.14.jpg)

hpdell 发表于 2010-10-22 11:19:09

不明白!!!!!!!!!!!!!!!

tomjark 发表于 2010-10-22 15:37:28

DMA貌似没有什么问题已经在运行没有报错,且当前DMA_CURR_COUNT 已经在传输第八个数据了。因此怀疑是你UART配置有问题,看看波特率或者其他地方是不是有问题。

hwbfc 发表于 2010-10-22 17:47:03

回复【2楼】tomjark
dma貌似没有什么问题已经在运行没有报错,且当前dma_curr_count 已经在传输第八个数据了。因此怀疑是你uart配置有问题,看看波特率或者其他地方是不是有问题。
-----------------------------------------------------------------------

那几行串口的程序就是是设置波特率和开启串口时钟,波特率已经验证过了,因为用那几行程序试过一次发一个数(不用DMA,给THR中直接写数)。谢谢你的回复

hwbfc 发表于 2010-10-22 19:52:27

自己顶一下,继续等大虾

tomjark 发表于 2010-10-22 21:21:39

上个我做过的UART发送指令控制外部设备的代码给你参考看看。程序是基于BF548的不过改改就能用了。

/****************************************************************************
* 名称 : Init_Port
* 功能 : 初始化UARTx接口
****************************************************************************/

void Init_Port(void)
{
        //UART3 function
        *pPORTB_FER        |= Px6|Px7;
       
        //UART transmit mode
        //set UART3CTS to high level
        *pPORTB_FER &= ~Px3;
        *pPORTB_DIR_SET |= Px3;
        *pPORTB |= Px3;
       
        //set UART3RTS to low level
        *pPORTB_FER &= ~Px2;
        *pPORTB_DIR_SET |= Px2;
        *pPORTB &= ~Px2;
       
}


/****************************************************************************
* 名称 : Init_UART3
* 功能 : 初始化UARTx接口
****************************************************************************/

void Init_UART3(void)
{
        *pUART3_GCTL =UCEN;
        *pUART3_LCR = 0x03;
        *pUART3_DLL = BAUD_RATE_1000000;
        *pUART3_DLH = (BAUD_RATE_1000000 >> 8);
}

/****************************************************************************
* 名称 : Init_DMA
* 功能 : 初始化DM
****************************************************************************/

void Init_DMA(void)
{       
        //peripheral map register
        *pDMA21_PERIPHERAL_MAP = 0xF000;
        // DMA Config: Enable DMA | 8-bit
        *pDMA21_CONFIG = DI_EN | WDSIZE_8 | SYNC;
        // start address of the DMA
        *pDMA21_START_ADDR = uartSendBuffer;
        //data count of transfers
        *pDMA21_X_COUNT = 18;
        //The modifier is set to 1 because of the 8 bit transfers       
        *pDMA21_X_MODIFY = 1;
       
        ssync();
}

/****************************************************************************
* 名称 : EnableUART3_DMA
* 功能 : 使能UART3_DMA
****************************************************************************/
void EnableUART3_DMA(void)
{
    // enable transfers
    *pDMA21_CONFIG |= 0x1;
    ssync();
   
    *pUART3_IER_SET|= ETBEI;
    ssync();
}

/****************************************************************************
* 名称 : EX_INTERRUPT_HANDLER
* 功能 : UART3中断函数
****************************************************************************/
EX_INTERRUPT_HANDLER(UART3_TxIsr)
{
        *pDMA21_IRQ_STATUS |= DMA_DONE;
        ssync();
        //printf("uart_dma end !\n");
        transmitted = 1;
}
页: [1]
查看完整版本: 求助坛友,BF533 UART DMA向外发数不成功,已经困死几个礼拜了