您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 其他Blackfin技术支持专区 -> BF506,配置UART1端口用DMA模式发送数据?
本帖共有1161个阅读者
发表帖子 发表投票 回复主题
BF506,配置UART1端口用DMA模式发送数据?
展翅雄鹰(论坛新手)
展翅雄鹰
头衔:社区公民
帮派:无帮无派
帖数:2
金钱:117
积分:3
注册时间:2012/4/26
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF506,配置UART1端口用DMA模式发送数据?
大家好,很高兴在论坛和大家成为朋友,我遇到的问题是:我使用的是ADSP-BF506芯片,配置PG0,PG3为UART1_RX和UART1_TX,现在我使用DMA模式进行数据的发送,可是一直在调试程序,系统中断,DMA等地址配置可能存在问题,一直都没能成功,大家能帮我看看吗?一起交流下,我会很感激的。以下是程序相关段落情况:
*pPORTG_MUX  =0x8082;//配置UART1 TX RX
//*pPORTG_FER = 0xFFE4;               //Enable DR1SEC, DR1PRI, RFS1, RSCLK1 for SPORT1 RX
*pPORTG_FER = 0x8FEF;                 //timer1,uart
/*PFIO初始化 */
*pPORTF_FER|=0x0000;   //GPIO MODE
   *pPORTFIO_DIR=0xFFFF; //PF0~~PF15,OUTPUT  
  
   /*UART1*/
   *pUART1_DLL = 0x2C;   //Divisor=5208,转换为16进制数是1458
    *pUART1_DLH = 0x0A;
    *pUART1_LCR = 0x03;   //数据长度为8位,一个停止位,无奇偶校验位  
   *pUART1_GCTL = 0x41;  //EDB0=1,使能串口时钟
    
  
   *pUART1_IER_SET = 0x03 ;  //UART1_rx,UART1_tx中断使能
   *pSIC_IAR3 = 0xFFFFFF43;  //UART1_tx  IVG11,UART1_rx   IVG10
   *pSIC_IMASK = 0x1800;    
   *pSIC_IMASK0 = 0X03000000;
   register_handler(ik_ivg10,UART1_Dma_Isr_Rx);
   register_handler(ik_ivg11,UART1_Dma_Isr_Tx);



/*DMA_UART1_Send_Data*/
*pDMA11_CONFIG=0x0080; /* not autobuff,linear block,8bit,Source */
     *pDMA11_PERIPHERAL_MAP=0x9000;/*UART-TX*/
*pDMA11_X_COUNT = send_lenth*4;
*pDMA11_X_MODIFY = 1;/*Linear*/
*pDMA11_START_ADDR = Send_Data; /* enable sport0_dma_start_hi_addr */
//Ttemp = *pDMA11_CONFIG;
//*pDMA11_CONFIG=(Ttemp|0x01);
  //*pDMA11_CONFIG=0x0081;                /*Enable DMA11*/


/***************DMA使能*************/
void Enable_DMA_Sport1_ADC(void)
{
*pSPORT1_RCR1 |= 0x1;                             // enable SPORT
*pACM_CTL |=      0x0001;                         // now enable the ACM unit
*pTIMER_ENABLE = TIMEN7;                          // now enable the PWM unit
    *pDMA4_CONFIG = (*pDMA4_CONFIG | DMAEN);       // enable DMA4
}


Send_Data[0]=11;
          Send_Data[1]=13;
          Send_Data[2]=15;
          Send_Data[3]=16;
          Send_Data[4]=17;
          Send_Data[5]=18;
          Send_Data[6]=19;
          Send_Data[7]=20;
          Send_Data[8]=21;
          Send_Data[9]=22;
          Send_Data[10]=23;
          Send_Data[11]=17;
          Send_Data[12]=18;
          Send_Data[13]=19;
          Send_Data[14]=20;
          Send_Data[15]=21;
          Send_Data[16]=22;
          Send_Data[17]=23;
          Send_Data[18]=23;
    
          *pDMA11_CONFIG=DMAEN;              /*Enable DMA11*/    
不知道哪里存在问题,有其他建议希望我们可以联系,谢谢!我的QQ:345113293


不断努力!
等级:论坛新手 参考IP地址:*.*.*.*
2012/4/26 17:37:44
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

*pSIC_IMASK = 0x1800;     这句冗余,其他没发现问题。

你先将除串口外的模块屏蔽,单独测试串口看看。可以通过DMA的寄存器判断是否DMA传输完成或出现错误。

你也可以不使用DMA模式传输数据验证硬件是否完好。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/4/26 19:48:22
展翅雄鹰(论坛新手)
展翅雄鹰
头衔:社区公民
帮派:无帮无派
帖数:2
金钱:117
积分:3
注册时间:2012/4/26
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
您好,谢谢您的回复。*pSIC_IMASK = 0x1800;     这句冗余,我将它屏蔽后也没有效果。另外,我用普通的传输数据方式,成功实现。硬件这块是没有问题的。我在程序上配置PG12和PG13用作UART0的发送接收,是可以成功的,可是我配置PGO和PG3却未能成功,UART0的发送使能相关是DMA9,用UART1实现是DMA11,我配置DAM11相关,不能实现!

不断努力!
等级:论坛新手 参考IP地址:*.*.*.*
2012/4/27 11:44:01
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154534 Call, 1 Queries, Processed in 0.031250 second(s),