ad50.c
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:2k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.11.00.00 11-04-03 (ddk-b13)" */
  9. /* 
  10.  *  ======== ad50.c ========
  11.  */
  12. #include <std.h>
  13. #include <csl.h>
  14. #include <csl_mcbsp.h>
  15. #include <ad50.h>
  16. static Void spWrite(MCBSP_Handle hMcbsp, Uns dataVal);
  17. static Void codecControlWrite(MCBSP_Handle hMcbsp, Uns regVal, Uns dataVal);
  18. /*
  19.  *  ======== AD50_init ========
  20.  */
  21. #pragma CODE_SECTION(AD50_init, ".text:init")
  22. Void AD50_init( Void )
  23. {
  24. }
  25. /*
  26.  *  ======== AD50_setParams ========
  27.  */
  28. Void AD50_setParams(MCBSP_Handle hMcbsp, AD50_Params *params)
  29. {
  30.     codecControlWrite(hMcbsp, 1, params->control1);
  31.     codecControlWrite(hMcbsp, 2, params->control2);
  32.     codecControlWrite(hMcbsp, 3, params->control3);
  33.     codecControlWrite(hMcbsp, 4, params->control4);
  34. }
  35. /*
  36.  *  ======== codecControlWrite ========
  37.  *  The 16-bit word in each control register is composed of:
  38.  *  b15-b8 -> register address to talk to 1 of 5 control registers
  39.  *  b7-b0  -> data.
  40.  */
  41. static Void codecControlWrite(MCBSP_Handle hMcbsp, Uns regVal, Uns dataVal)
  42. {
  43.     Uns temp;
  44.  
  45.     temp = (regVal << 8) | (dataVal & 0x00ff);
  46.     /* write '1' to put codec into command mode */
  47.     spWrite(hMcbsp, 1);
  48.     /* write the command */
  49.     spWrite(hMcbsp, temp);
  50. }
  51. /*
  52.  *  ======== spWrite ========
  53.  *  WARNING!  Unbounded while loop!
  54.  *  spWrite() should only be called during init time.
  55.  */
  56. static Void spWrite(MCBSP_Handle hMcbsp, Uns dataVal)
  57. {
  58.     while(!MCBSP_xrdy(hMcbsp)) {
  59.         /* wait for TX ready */
  60.     }
  61.     MCBSP_write(hMcbsp, dataVal);
  62. }