![]() |
|
||||||||||||||
| | 首页 | 新闻 | 文库 | 方案 | 技术 | 独家 | 座谈 | 下载 | 图库 | 开发板 | 仿真器 | 邮购 | VIP | 芯片 | 客户评价 | 论坛 | | ||
|
||
|
|||||
| 使用UART接收数据(DMA模式)问题请教 | |||||
作者:佚名 新闻来源:Internet 点击数: 更新时间:2007-10-8 ![]() |
|||||
|
问题是这样:我把BF533的UART接口定义为DMA模式接收数据,但是接收到的数据总是零. 我不知道是不是我的配置有问题. main() 通过超级终端给BF533发数据,无论键入什么字符,当DMA完成后,查看数组rec_buffer的值.全都是零..不知道是为什么. 请高手指点一下! 谢谢~ ------------------------------------------------------------------------------- 注意每句MMR赋值语句后面要加入ssync ------------------------------------------------------------------------------- 都加了SSYNC后,调试还是收不到数据. 我在每句Memory-mapped Registers操作的语句后面都加了SSYNC语句.调试,还是不行.不知道为什么. 单步到while(*pDMA6_IRQ_STATUS&0x8); 通过串口给blackfin输入10个字符后,就能跳出这个while循环,按理应该收到了数据才对.但是读那个数组,却全都是0.不知道为什么. 请大家给点意见啊~ 谢谢~ ------------------------------------------------------------------------------- VDSP里面有UART通信的例子的 在安装目录的samples里面,听听ADI的那个视频教程 ------------------------------------------------------------------------------- 我搜了一下,在我的安装路径下面找不到你说的例子程序.有两个samples文件夹,但是不是blackfin处理器的.我也进去看了一下.里面的代码没有设计到UART.
------------------------------------------------------------------------------- 配置DMA没必要加ssync(); ------------------------------------------------------------------------------- VDSP里面确实没有c语言的DMA模式UART范例,还是我来给你吧 /* Input CLK frequency */ /* UART Baud Rate Selection */ typedef signed char int8_t; #define TXLEN 256 #define RXLEN 2560 #define ssync() asm("ssync;") EX_INTERRUPT_HANDLER(Uart_Dma_Isr_Tx); void Init_Interrupts(); /*Buffers*/
Init_Interrupts(); while(1) } register_handler(ik_ivg10, Uart_Dma_Isr_Tx); *pSIC_IMASK = 0x0000c000;//DMA6(uartrx) & DMA7(uarttx) /*Transmit isr*/ /*Receive isr*/ /*Uart Tx init*/ *pDMA7_CONFIG=0x1080; /* Ena autobuff,linear block,8bit,Source */ *pDMA7_PERIPHERAL_MAP=0x7000;/*UART-TX*/ *pDMA7_X_COUNT = TXLEN; *pDMA7_X_MODIFY = 1;/*Linear*/ *pDMA7_Y_COUNT = 0; *pDMA7_Y_MODIFY = 0; /* enable sport0_dma_start_hi_addr */ Ttemp = *pDMA7_CONFIG; /*Uart rx init*/ *pDMA6_CONFIG=0x1082; /* Ena autobuff,linear block,8bit,Destination */ ssync(); *pDMA6_PERIPHERAL_MAP=0x6000;/*UART-RX*/ *pDMA6_X_COUNT = RXLEN;//LEN; *pDMA6_X_MODIFY = 1;/*Linear*/ *pDMA6_Y_COUNT = 0; *pDMA6_Y_MODIFY = 0; /* enable sport0_dma_start_hi_addr */ Ttemp = *pDMA6_CONFIG;
/* Line Control Setup : 8-bit data, no parity, 1 stop bit */
msel = (*pPLL_CTL)>>9; // Read MSEL[5:0] from PLL_CTL /* Read SSEL from PLL_DIV register */ /* divisor calculation: if(*pPLL_CTL & 0x1) // If DF = 1, CLKIN/2 is going to PLL /* Baud Rate Setup: 115.2 Kbps */ *pUART_IER =0x3;//Enable interrupts for receive & transmit //*pUART_IER =0x2;//Enable interrupts for transmit //*pUART_IER =0x1;//Enable interrupts for receive ssync(); } ------------------------------------------------------------------------------- 非常感谢楼上各位的指导,在调试了oppop的代码后,坚信硬件没有问题后,对比了一下oppop的代码.原来我把DMA的方向设置反了.晕.....非常感谢各位的帮助
|
|||||
| 新闻录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 关于GUI blackfin toolchain 安装 关于BF532驱动LCD 一般在bf533上面做mpeg4的方 关于ADSP-BF533-EZLITE评估板 bf533 ezkit lite 跑得很慢么 不解的SDRAM写操作? 如何在uClinux下使用汇编语言 flash programer问题 printf( "\n test printf!\n |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 本站介绍 | 合作联络 | 欢迎投稿 | 广告业务 | 网站地图 | 设为首页 | 加入收藏 | 友情链接 | 网站公告 | 联系我们 | | |||
|