免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1221 | 回复: 0
打印 上一主题 下一主题

2410的DMA和IIS控制器摘要 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-15 16:47 |只看该作者 |倒序浏览
2410的I2S接口分析
以下内容是对2410的datasheet的理解.
overview  
  • 支持iis bus data格式和

    MSB-justified data格式
  • 支持dma方式访问内部的发送和接收FIFO
  • 支持同时发送和接收

block diagram
从图(见datasheet原文)上可以看出,iis模块与cpu一段是AHB总线,就是ADDR,DATA,CTRL和PCLK.和外设之间是:
  • SD:serial data,通过移位寄存器和FIFO内的数据进行转换,从后文看应该是发送接收各一,SDI和SDO
  • SCLK:就是位时钟了
  • LRCK:区分左右声道


  • CDCLK

传输模式  
  • normal transfer
    通过接收FIFO和发送FIFO的ready标志进行读写
  • dma
    由dma控制器访问FIFO
  • transmit and receive mode
    发送和接收可以同时进行.

    audio serial interface format
    iis bus format
    串行数据以二进制补码传输,MSB在前.MSB在前的好处是不需要理会传输各方的字长,具体的解释如下:
    The MSB is transmitted first because the transmitter and receiver may
    have different word lengths. The transmitter does not have to know how
    many bits the receiver can handle, nor does the receiver need to know
    how many bits are being transmitted.
    When the system word length is greater than the transmitter
    word length, the word is truncated (least significant data bits are set
    to '0') for data transmission. If the receiver gets more bits than its
    word length, the bits after the LSB are ignored. On the other hand, if
    the receiver gets fewer bits than its word length, the missing bits are
    set to zero internally. And therefore, the MSB has a fixed position,
    whereas the position of the LSB depends on the word length. [color="#ff0000"] The transmitter sends the MSB of the next word at one clock period whenever the IISLRCK is changed.
    注意上文的红色部分,这也是此格式相异与另一种格式的唯一区别:下一个直接的MSB是在距LRCK改变后的一个时钟后开始传输,也就是说LRCK改变后还会传输一位的前一数据的LSB.
    msb(left) justified
    如前文所述,与iis bus format的区别就是LRCK改变后立即发送下一个直接的MSB,而不是再传输一位.
    采样频率和主时钟

    这节没大懂,尤其是里面256fs,384fs这些,skip

    看完后文后补充:
    fs意思是采样频率(sampling frequency),其他几个概念还是不明确

    :
    • master clock frequency: 265/384fs
    • serial bit clock frequency: 16/32/48fs
    • serial data bit per channel: 8/16

    iis LRCK仿佛就是采样频率,因为它的一个周期就传输采样的一次左声道和右声道的数据.但是这个频率又是怎么得到的呢

    ?
    寄存器
    寄存器的地址0x55000000开始的,终于明白了代码里面的地址部分写的0x55XX原来是2410的i2s寄存器的物理地址.

    有个不明白的地方,datasheet上说了有两个64字节的fifo(16bitX32),但是只有一个读fifo数据的寄存器,怎么选择当前操作的fifo呢?
    2410的dma控制器
    overview
    4通道的dma控制器,支持4种数据传输方式(即系统总线的设备和外设总线的设备的2x2组合)
    DMA操作可以有3种启动方式:
  • software
  • 内部设备的requests
  • external request pins

    dma request sources
    每个dma通道可以使用的source都不一样,其中ch2我比较感兴趣,它支持以下源:
  • I2SSDO
    ?

  • I2SSDI
    ?

  • SDI
  • Timer
  • USB device EP3

    dma operations
    dma使用了3态的有限状态机:
    • 状态1: 等待dma请求
    • 状态2: dma_ack置位,从寄存器中读取CURR_TC
    • 状态3: 传输数据,又分两种情况
      • single service mode: 只传输一次,然后清除dma_ack,如果CURR_TC被减为0,置位INT_REQ
      • whole service mode: 传输CURR_TC次,然后清除dma_ack,置位INT_REQ


    dma registers
    与实际传输的字节数相关的变量:
    • TC: 传输的count值
    • DSZ: data size(byte, half word, word)
    • TSZ: 一次原子传输的siez(1,4)

    所以实际传输的字节数=DSZ*TSZ*TC.
    源或目的地址在传输中都可以设置为递增或固定的(比如对io端口访问的时候).
    有3种external dma request/acknowledge protocol,代表了源为xdreq时不同的时序:
    • single service demand
    • single service handshake
    • whole service handshake

    这部份iis的dma不用关心,因为它不是外围的源.
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/82219/showart_1307136.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP