久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4936|回復: 0
打印 上一主題 下一主題
收起左側

DSP多通道緩沖串口介紹

[復制鏈接]
跳轉到指定樓層
樓主
ID:211543 發表于 2017-6-15 16:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
DSP多通道緩沖串口可以支持多種通信方式,E1,SPI ,I2C等,可以與聲卡芯片,AD芯片等通信。

  1. 一、        接收的配置流程
  2. 1.        Global behavior:
  3. 設置管腳和工作模式
  4. Set the receiver pins to operate as McBSP pins
  5. Enable/disable the digital loopback mode   回環模式
  6. Enable/disable the clock stop mode 時鐘停止模式
  7. Enable/disable the receive multichannel selection mode 多通道
  8. 2.        Data behavior:
  9. Choose one or two phases for the receive frame 接受幀單段還是雙段
  10. Set the receive word length(s)  接收字長
  11. Set the receive frame length  
  12. Enable/disable the receive frame-sync ignore function
  13. Set the receive companding mode
  14. Set the receive data delay
  15. Set the receive sign-extension and justification mode 數據符號擴展和校驗
  16. Set the receive interrupt mode
  17. 3.  Frame-sync behavior:
  18.   Set the receive frame-sync mode
  19.   Set the receive frame-sync polarity
  20.   Set the SRG frame-sync period and pulse width
  21. 4. Clock behavior:
  22. Set the receive clock mode
  23. Set the receive clock polarity
  24. Set the SRG clock divide-down value
  25. Set the SRG clock synchronization mode
  26. Set the SRG clock mode [choose an input clock]
  27. Set the SRG input clock polarity
  28. 二、寄存器配置
  29.         接收時需要配置的寄存器: SPCR1, SPCR2, PCR, RCR1, RCR2SRGR1, SRGR2 ,其他的可以設為default
  30.         下面是一個我的調試配置參數,所有時鐘和幀同步都由外部提供
  31. /* create a MCBSP config structure for recevie only mode, ignore the send configrue */
  32. /* 外部提供所有時鐘
  33. * 單幀
  34. * 每幀8bit
  35. * CLK 2.048Mhz
  36. * FS 8K
  37. * 數據 1Bit延遲
  38. */
  39. // this configuration OK
  40. static MCBSP_Config MCBSP_READONLY_Config_test= {
  41.      MCBSP_SPCR1_RMK(
  42.      MCBSP_SPCR1_DLB_OFF,    //DLB = 0        Digital loopbakc mode diable
  43.      MCBSP_SPCR1_RJUST_RZF,  // RJUST = 0   Right justify the data and zero fill MSBs         
  44.       MCBSP_SPCR1_CLKSTP_DISABLE, //CLKSTP = 0   Clock stop mode disable         
  45.       MCBSP_SPCR1_DXENA_OFF,      //DXENA = 0 DX delay enabler off
  46.       MCBSP_SPCR1_ABIS_DISABLE,    //reserbed  always write 0      
  47.       MCBSP_SPCR1_RINTM_RRDY,     //RINTM = 00   when the RRDY bit change form 0 to 1,Int mode
  48.       MCBSP_SPCR1_RSYNCERR_NO,    // RSYNCERR = 0   receibe frame-sync error bit, no error                              
  49.       MCBSP_SPCR1_RRST_DISABLE    //RRST = 0 reset the receiver
  50.      //注意:: 開始一定要設置為 disable 否則不能設置它的寄存器,全部為默認值
  51.       //導致不能正常接收, 在 程序調用C庫函數 mcbspstart 時會在設為1 McBSP 便退出reset狀態開始工作
  52. ),
  53. MCBSP_SPCR2_RMK(
  54. MCBSP_SPCR2_FREE_NO,    //FREE   = 0   
  55. MCBSP_SPCR2_SOFT_NO,    //SOFT   = 0
  56. MCBSP_SPCR2_FRST_RESET,    //FRST   = 0   SPG reset
  57. MCBSP_SPCR2_GRST_RESET,    // GRST   = 0   SPG reset
  58. MCBSP_SPCR2_XINTM_XRDY,    //XINTM  = 0   transmit interrupt mode, XRDY bit change form 0 to 1
  59. MCBSP_SPCR2_XSYNCERR_NO, //XSYNCER = 0  transmit  frame-sync error bit, no error  
  60. MCBSP_SPCR2_XRST_DISABLE    // XRST   = 0, reset the transmitter
  61. //注意:: 開始一定要設置為 disable 否則不能設置它的寄存器, 全部為默認值
  62. //導致不能正常發送, 在 程序調用C庫函數 mcbspstart 時會在設為1 McBSP 便退出reset狀態開始工作
  63.     ),
  64. MCBSP_RCR2_RMK(
  65. MCBSP_RCR2_RPHASE_SINGLE,    //RPHASE  = 0  single-phase frame
  66. MCBSP_RCR2_RFRLEN2_OF(0),    //RFRLEN2 = 0
  67. MCBSP_RCR2_RWDLEN2_8BIT,    //RWDLEN2 = 0
  68. MCBSP_RCR2_RCOMPAND_MSB,    //RCOMPAND = 0  receibe companding mode, 0:no companding, MSB received first
  69. MCBSP_RCR2_RFIG_NO,    //RFIG    = 1  frame-sync ignore bit ,1: ignore
  70. MCBSP_RCR2_RDATDLY_1BIT    //RDATDLY = 01  receive 1-bit data delay
  71.     ),
  72. MCBSP_XCR1_DEFAULT,    //
  73. MCBSP_XCR2_DEFAULT,    //
  74. MCBSP_SRGR1_RMK(
  75. MCBSP_SRGR1_FWID_OF(0),    //FWID    = 0
  76. MCBSP_SRGR1_CLKGDV_OF(0)    //CLKGDV  = 0
  77.   ),
  78. MCBSP_SRGR2_RMK(
  79. MCBSP_SRGR2_GSYNC_FREE,     // GSYNC    = 0  5502 always write 0
  80. MCBSP_SRGR2_CLKSP_RISING,    //CLKSP   = 0  5502 don't have the CLKS pin  set 0 always rsing edge igern the CLKRP and CLKXP
  81. MCBSP_SRGR2_CLKSM_CLKS,    //CLKSM   = 0  work with the CLKME bit inPCR
  82.      /*  SCLKME              CLKSM         Sample Rate Generator     
  83.            0                   0           Signal on CLKS pin 注意5501沒有CLKS pin
  84.            1                   0           Signal on CLKR pin
  85.            0                   1           McBSP internal input clock
  86.                                           (low外設的時鐘--SYSCLK3)
  87.            1                   1           Signal on CLKX pin
  88.      /*
  89.       MCBSP_SRGR2_FPER_OF(0)    // FPER    = 0
  90.     ),
  91.     MCBSP_MCR1_DEFAULT,
  92.     MCBSP_MCR2_DEFAULT,
  93.     MCBSP_PCR_RMK(
  94.       MCBSP_PCR_XIOEN_SP,    //XIOEN    = 0
  95.       MCBSP_PCR_RIOEN_SP,   //RIOEN    = 0  
  96.       MCBSP_PCR_FSXM_EXTERNAL,    //FSXM = 0  
  97.       MCBSP_PCR_FSRM_EXTERNAL,    //FSRM     = 0
  98.       MCBSP_PCR_CLKXM_INPUT,    //CLKXM    = 0  
  99.       MCBSP_PCR_CLKRM_INPUT,    //CLKRM    = 0
  100.       MCBSP_PCR_SCLKME_BCLK,    //SCLKME   = 1
  101.       MCBSP_PCR_DXSTAT_0,    //DXSTAT =  0 , used noly the RIOEN bit = 1
  102.       MCBSP_PCR_FSXP_ACTIVEHIGH,    //FSXP     = 0   
  103.       MCBSP_PCR_FSRP_ACTIVEHIGH,    // FSRP     = 0   
  104.       MCBSP_PCR_CLKXP_RISING,      //CLKXP    = 0  
  105.       MCBSP_PCR_CLKRP_FALLING    //CLKRP    = 0   
  106.     ),
  107.     MCBSP_RCERA_DEFAULT,
  108.     MCBSP_RCERB_DEFAULT,
  109.     MCBSP_RCERC_DEFAULT,
  110.     MCBSP_RCERD_DEFAULT,
  111.     MCBSP_RCERE_DEFAULT,
  112.     MCBSP_RCERF_DEFAULT,
  113.     MCBSP_RCERG_DEFAULT,
  114.     MCBSP_RCERH_DEFAULT,
  115.     MCBSP_XCERA_DEFAULT,
  116.     MCBSP_XCERB_DEFAULT,
  117.     MCBSP_XCERC_DEFAULT,
  118.     MCBSP_XCERD_DEFAULT,
  119.     MCBSP_XCERE_DEFAULT,
  120.     MCBSP_XCERF_DEFAULT,
  121.     MCBSP_XCERG_DEFAULT,
  122.     MCBSP_XCERH_DEFAULT
  123.      };
  124. 注意的幾點:
  125. 1.  在configure是 RRST 和 XRST 一定要設置為Disable,才可以正確的配置他的各個寄存器
  126. 2. 5502 不支持 CLKG的同步  SRGR2中的 GSYNC bit 始終寫為 0
  127. 使用時如下步驟:

  128. IRQ_globalDisable();
  129. hMcbsp = MCBSP_open(MCBSP_PORT1, MCBSP_OPEN_RESET);
  130. rcvEventID = MCBSP_getRcvEventId(hMcbsp);
  131. IRQ_setVecs((Uint32)(&VECSTART));
  132. IRQ_clear(rcvEventID);
  133. IRQ_plug(rcvEventID, &readISR);
  134. MCBSP_config(hMcbsp, &MCBSP_READONLY_Config_ _test);
  135. IRQ_enable(rcvEventID);
  136. /* Start Sample Rate Generator and Frame Sync */
  137. MCBSP_start(hMcbsp,MCBSP_SRGR_START | MCBSP_SRGR_FRAMESYNC,0x300);  //如果需要
  138. /* Enable MCBSP transmit and receive */
  139. MCBSP_start(hMcbsp,  MCBSP_RCV_START ,  0);
  140. IRQ_globalEnable();
  141. 三、測試例程
  142. 下面是我的一個測試程序,可以正確接受數據:
  143. /*
  144. * Copyright (C) 2010 2202Lab tiany
  145. * All Rights Reserved
  146. */
  147. /*
  148. *---------mcbsp_test.c---------
  149. * McBSP receive and send example
  150. */
  151. #include <stdio.h>
  152. #include <csl.h>
  153. #include <csl_mcbsp.h>
  154. #include <csl_irq.h>
  155. //---------Global constants---------
  156. #define SIZE                        1024
  157. //---------Global data definition---------
  158. //Handle for McBSP
  159. static volatile MCBSP_Handle hMcbsp;
  160. //Buffers to store data
  161. static volatile Uint16 writeBuff[SIZE], readBuff[SIZE];
  162. Uint16 rcvEventID;
  163. Uint16 cnt=0;
  164. /* create a MCBSP config structure for recevie only mode, ignore the send configrue */
  165. /* 外部提供所有時鐘
  166. * 單幀
  167. * 每幀8bit
  168. * CLK 2.048Mhz
  169. * FS 8K
  170. * 數據 1Bit延遲
  171. */
  172. // this configuration OK
  173. static MCBSP_Config MCBSP_READONLY_Config_test= {
  174.         MCBSP_SPCR1_RMK(
  175.         MCBSP_SPCR1_DLB_OFF,    //DLB = 0         Digital loopbakc mode diable
  176.         MCBSP_SPCR1_RJUST_RZF,  // RJUST = 0  Right justify the data and zero fill MSBs         
  177.         MCBSP_SPCR1_CLKSTP_DISABLE,    //CLKSTP = 0   Clock stop mode disable         
  178.         MCBSP_SPCR1_DXENA_OFF,    //DXENA = 0 DX delay enabler off
  179. MCBSP_SPCR1_ABIS_DISABLE,   //reserbed  always write 0      
  180.         MCBSP_SPCR1_RINTM_RRDY,     //RINTM = 00  when the RRDY bit change form 0 to 1,Int mode
  181.         MCBSP_SPCR1_RSYNCERR_NO,    // RSYNCERR = 0   receibe frame-sync error bit, no error                              
  182. MCBSP_SPCR1_RRST_DISABLE    //RRST = 0 reset the receiver
  183.         //注意 開始一定要設置為 disable 否則不能設置它的寄存器,導致不能正常工作, 在 mcbspstart時會在設為1 McBSP 便開始工作
  184.                   ),
  185.    MCBSP_SPCR2_RMK(
  186. MCBSP_SPCR2_FREE_NO,    //FREE   = 0   
  187. MCBSP_SPCR2_SOFT_NO,    //SOFT   = 0
  188. MCBSP_SPCR2_FRST_RESET,    //FRST   = 0   SPG reset
  189. MCBSP_SPCR2_GRST_RESET,    // GRST   = 0   SPG reset
  190. MCBSP_SPCR2_XINTM_XRDY,    //XINTM  = 0   transmit interrupt mode, XRDY bit change form 0 to 1
  191. MCBSP_SPCR2_XSYNCERR_NO,    //XSYNCER = 0  transmit  frame-sync error bit, no error  
  192. MCBSP_SPCR2_XRST_DISABLE    // XRST   = 0, reset the transmitter
  193.                   ),
  194.    MCBSP_RCR1_RMK(
  195. MCBSP_RCR1_RFRLEN1_OF(0),    // RFRLEN1 = 0   receive fram length 1
  196. MCBSP_RCR1_RWDLEN1_8BIT    // RWDLEN1 = 0  8bit   receive word length 1
  197.                   ),
  198.    MCBSP_RCR2_RMK(
  199. MCBSP_RCR2_RPHASE_SINGLE,    //RPHASE  = 0  single-phase frame
  200. MCBSP_RCR2_RFRLEN2_OF(0),    //RFRLEN2 = 0
  201. MCBSP_RCR2_RWDLEN2_8BIT,    //RWDLEN2 = 0
  202. MCBSP_RCR2_RCOMPAND_MSB,    //RCOMPAND = 0  receibe companding mode, 0:no companding, MSB received first
  203.         MCBSP_RCR2_RFIG_NO,    //RFIG    = 1  frame-sync ignore bit ,1: ignore
  204.         MCBSP_RCR2_RDATDLY_1BIT    //RDATDLY = 01  receive 1-bit data delay
  205.                   ),
  206.     MCBSP_XCR1_DEFAULT,    //
  207.         MCBSP_XCR2_DEFAULT,    //
  208.         MCBSP_SRGR1_RMK(
  209.         MCBSP_SRGR1_FWID_OF(0),    //FWID    = 0
  210.         MCBSP_SRGR1_CLKGDV_OF(0)    //CLKGDV  = 0
  211.                   ),
  212.                   MCBSP_SRGR2_RMK(
  213.                     MCBSP_SRGR2_GSYNC_FREE,     // GSYNC    = 0  5502 always write 0
  214.                     MCBSP_SRGR2_CLKSP_RISING,    //CLKSP   = 0  5502 don't have the CLKS pin  set 0 always rsing edge igern the CLKRP and CLKXP
  215.                     MCBSP_SRGR2_CLKSM_CLKS,    //CLKSM   = 0  work with the CLKME bit inPCR
  216.      MCBSP_SRGR2_FSGM_DXR2XSR,     //FSGM    = 0
  217.          MCBSP_SRGR2_FPER_OF(0)    // FPER    = 0
  218.                   ),
  219.                   MCBSP_MCR1_DEFAULT,
  220.                   MCBSP_MCR2_DEFAULT,
  221.                   MCBSP_PCR_RMK(
  222.                     MCBSP_PCR_XIOEN_SP,    //XIOEN    = 0
  223.                     MCBSP_PCR_RIOEN_SP,   //RIOEN    = 0  
  224.                     MCBSP_PCR_FSXM_EXTERNAL,    //FSXM = 0  
  225.                     MCBSP_PCR_FSRM_EXTERNAL,    //FSRM     = 0
  226.                     MCBSP_PCR_CLKXM_INPUT,    //CLKXM    = 0  
  227.                     MCBSP_PCR_CLKRM_INPUT,    //CLKRM    = 0
  228.                     MCBSP_PCR_SCLKME_BCLK,    //SCLKME   = 1
  229.                     MCBSP_PCR_DXSTAT_0,    //DXSTAT =  0 , used noly the RIOEN bit = 1
  230.                     MCBSP_PCR_FSXP_ACTIVEHIGH,    //FSXP     = 0   
  231.                     MCBSP_PCR_FSRP_ACTIVEHIGH,    // FSRP     = 0   
  232.                     MCBSP_PCR_CLKXP_RISING,      //CLKXP    = 0  
  233.                     MCBSP_PCR_CLKRP_FALLING    //CLKRP    = 0   
  234.                   ),
  235.                   MCBSP_RCERA_DEFAULT,
  236.                   MCBSP_RCERB_DEFAULT,
  237.                   MCBSP_RCERC_DEFAULT,
  238.                   MCBSP_RCERD_DEFAULT,
  239.                   MCBSP_RCERE_DEFAULT,
  240.                   MCBSP_RCERF_DEFAULT,
  241.                   MCBSP_RCERG_DEFAULT,
  242.                   MCBSP_RCERH_DEFAULT,
  243.                   MCBSP_XCERA_DEFAULT,
  244.                   MCBSP_XCERB_DEFAULT,
  245.                   MCBSP_XCERC_DEFAULT,
  246.                   MCBSP_XCERD_DEFAULT,
  247.                   MCBSP_XCERE_DEFAULT,
  248.                   MCBSP_XCERF_DEFAULT,
  249.                   MCBSP_XCERG_DEFAULT,
  250.                   MCBSP_XCERH_DEFAULT
  251.             };
  252. interrupt void readISR(void);
  253. extern void VECSTART(void);//外部中斷向量表  
  254. //使用的TI例程 沒有改動 在/CCStudio_v3.3/examples/c5502/csl/mcbsp/mcbsp2目錄下的vectors_mcbsp2.s55
  255. //---------main routine---------
  256. void main()
  257. {
  258.     Uint16  i;
  259.     for (i = 0; i <= SIZE - 1; i++) {
  260.             readBuff[i] = 0x00;
  261.     }
  262.     CSL_init();
  263.     //Disable interrupt
  264.     IRQ_globalDisable();
  265.     //Open McBSP channel
  266.     hMcbsp = MCBSP_open(MCBSP_PORT1, MCBSP_OPEN_RESET);
  267.     /* Get EventId's associated with MCBSP Port 1 receive and transmit */
  268. rcvEventID = MCBSP_getRcvEventId(hMcbsp);

  269.     IRQ_setVecs((Uint32)(&VECSTART));
  270.     /* Clear any pending receive or transmit interrupts */
  271.     IRQ_clear(rcvEventID);
  272.     IRQ_plug(rcvEventID, &readISR);

  273.     /* Write values from configuration structure to MCBSP control regs */
  274.     MCBSP_config(hMcbsp, &MCBSP_READONLY_Config_test);

  275.     /* Enable the MCBSP receive and transmit interrupts */
  276.     IRQ_enable(rcvEventID);

  277.         /* Enable MCBSP transmit and receive */
  278.         MCBSP_start(hMcbsp,
  279.           MCBSP_RCV_START ,
  280.           0);

  281.         IRQ_globalEnable();
  282.         while(1);
  283. }
  284. // ISR to receive data
  285. interrupt void readISR(void)
  286. {
  287.     readBuff[cnt] = MCBSP_read16(hMcbsp);
  288.     cnt++;
  289.     if (cnt == SIZE)
  290.     {
  291.         cnt = 0;
  292.     }
  293. }
復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲免费观看视频网站 | 一级毛片免费视频观看 | 久久综合色综合 | 乱码av午夜噜噜噜噜动漫 | 精品欧美一区二区三区久久久 | 人人人人干 | 国产精品3区 | 国产传媒毛片精品视频第一次 | 日韩免费高清视频 | 亚洲精品在线视频 | 一区二区三区不卡视频 | 成人免费在线观看 | 久久精品久久久久久 | 国产成人在线视频 | 精品视频一区二区三区四区 | 亚洲综合久久久 | 精品网站999www| 欧美一区二区三区在线播放 | 国产成人精品一区二区三 | 欧美中文字幕一区二区三区亚洲 | 岛国精品| 一级aaaaaa毛片免费同男同女 | 国产精品欧美一区二区三区不卡 | 毛片a区| 福利av在线 | 韩日一区二区三区 | 欧美在线一区视频 | 日韩在线视频精品 | 精品免费国产一区二区三区 | 国产精品久久久久久一级毛片 | 中文字幕 视频一区 | 中文字幕一区二区三区四区五区 | 国产精品国产三级国产aⅴ中文 | 亚洲免费精品一区 | 亚洲劲爆av | 人人九九精 | 亚洲精品在线视频 | 久久精品国产一区二区电影 | 国产精品久久亚洲 | 99久久免费观看 | 亚洲欧美一区二区三区1000 |