sharc 21489的sport学习笔记

来源:互联网 发布:正装 知乎 编辑:程序博客网 时间:2024/05/27 09:48

标准sport
 1.配置好sru
 2.清除配置寄存器
  *pSPMCTL5=0;
  *pSPCTL5=0;       //clear register first
 3.配置FS和CLK的分频系数,前四位是FS的,后四位是CLK的
  *pDIV5=0xa0020;      //FS:a   CLK:20
 4.配置sport的设置寄存器,使能SPEN_A是使能A通道,AB通道的关系是公用一个FS和CLK,但是有不同的数据端,故一次可以收发两个数据。
  *pSPCTL5 = ( SLEN8 | SPTRAN | IFS | ICLK  | SPEN_A | SPEN_B | FSR );//| SDEN_A | DIFS | LAFS  OPMODE |
 5.向发送缓冲寄存器写数据,开始发送数据。
  *pTXSP5A=0xa;    //channel A
  *pTXSP5B=0xa;    //channel B
 6.等待发送结束,查询SPCTLx的状态位DXS_A 
  while(*pSPCTL5 & 0x80000000); //polling to wait until sport transmiting finsih


DMA方式sport
 1,2,3步骤同上
 4,配置DMA相关寄存器,即设置地址,增量,发送个数,需要注意发送个数寄存器的长度为16位,故不能发送个数超过FFFF个数据
  *pIISP5A=(unsigned int)output;     //DMA address
  *pIMSP5A=1;       //DMA modify
  *pCSP5A=LEN;       //DMA count number
 5.配置SPCTLx寄存器,使能DMA,即SDEN_A
  *pSPCTL5 = ( SLEN8 | SPTRAN | IFS | ICLK  | SPEN_A | SPEN_B | FSR | SDEN_A);// | DIFS | LAFS  OPMODE |
 6.如何查询标志位还没有弄清楚,目前查询SPMCTLx的DMASxA不管用,而且x和y也不知道有什么区别

 

链式DMA方式sport
 

待续。。。