打印

又要麻烦不知了,UART的DMA没这个寄存器啊

[复制链接]
2504|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzjgod|  楼主 | 2012-4-27 11:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我看程序上DMA的偏移量是0X48,但是手册上根本没这个寄存器啊。还有如果使能FIFO之后,UARTCharGetNonBlocking()这个函数只能收到1字节数据,如果是FIFO中有几个数据,是不是还要自己重新写一个多字节接收的函数啊?
Stellaris的UART咋跟别的不一样啊?

相关帖子

沙发
TI_MCU| | 2012-4-27 13:52 | 只看该作者
FIFO读取是通过读取UARTDR寄存器完成的,所以每次只能读出一个,要读多个得进行多次读取。

为了提高性能,建议用DMA

使用特权

评论回复
板凳
TI_MCU| | 2012-4-27 13:52 | 只看该作者
楼主说的DMA的偏移量指的是什么?能不能详细点说?

使用特权

评论回复
地板
永远的不知| | 2012-4-27 15:48 | 只看该作者
1# yzjgod
1. DMA的您指的哪个寄存器?可否把您所说的程序贴出来。
2. 如T版所说,那个函数只是接收1个字节的函数,接收多个字节,字节再加一个循环就可以了。
3. 您指的和其他的不一样,能不能具体说说指的是哪些地方?其实都是大同小异的。

使用特权

评论回复
5
yzjgod|  楼主 | 2012-4-28 08:27 | 只看该作者
#define UART_O_DMACTL           0x00000048  // UART DMA Control

我说的是这个寄存器,手册上没有这个寄存器的描述




void
UARTDMAEnable(unsigned long ulBase, unsigned long ulDMAFlags)
{
    //
    // Check the arguments.
    //
    ASSERT(UARTBaseValid(ulBase));

    //
    // Set the requested bits in the UART DMA control register.
    //
    HWREG(ulBase + UART_O_DMACTL) |= ulDMAFlags;
}

DMA使能的操作应该是没法实现的吧

使用特权

评论回复
6
yzjgod|  楼主 | 2012-4-28 08:34 | 只看该作者
昨天下午去TI的宣讲会了,没看到各位版主的回复,除了开发板和资料,也没什么实质内容感觉。

使用特权

评论回复
7
yzjgod|  楼主 | 2012-4-28 09:00 | 只看该作者
比较了一下6965和9B92的手册,发现6965没有DMA功能,而9B92有这个功能,这个操作就算了吧。
现在主要实验FIFO这个功能,现在没使能这个功能的时候,发现发送的时候,只要发送的数据在16个字节以内,不进行发送写入成功校验时,即不判断
UARTCharPutNonBlocking(UART0_BASE, *pucBuffer)
这个函数的返回值时,16个字节以内都能成功发送,发送数据多于16个的时候就会出错,也就是这个时候的FIFO是有用的,但是也没使能这个功能啊,接收的时候我没判断FIFO里有多少数据,不知道此时发生中断是否就是FIFO中有1个字节还是FIFO使能时的默认8字节,虽然影响不大,但是对于手册上的描述感觉就不是那么信任了。
哎,继续试验吧。

使用特权

评论回复
8
yzjgod|  楼主 | 2012-4-30 19:42 | 只看该作者
顶一下,别沉了,版主五一也放假啊

使用特权

评论回复
9
jxmzzr| | 2012-4-30 23:47 | 只看该作者
发问不清,给楼主发回重写。呵呵,顶一下。

使用特权

评论回复
10
yzjgod|  楼主 | 2012-5-3 09:05 | 只看该作者
版主今天上班吗?再顶一下

使用特权

评论回复
11
cicychen| | 2014-1-24 10:36 | 只看该作者
yzjgod 发表于 2012-4-28 08:27
#define UART_O_DMACTL           0x00000048  // UART DMA Control

我说的是这个寄存器,手册上没有这个 ...

有这个寄存器,不是资料错了,就是你弄错了

使用特权

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

本版积分规则

239

主题

370

帖子

2

粉丝