我的程序是5510串口初始化aic11,要求初始完成后音频信号能直通。<br />我的问题是<br /> 1。串口回环能够通过(不考虑aic11):即 写入数据到dxr后,在drr中能正确的收到,但是在dx管脚用示波器却测不到。<br /> 2。取消回环,初始化aic11不能成功,数据不能写入到aic11的寄存器,如果写入成功的话,aic11的输出时钟会按照配制的要求改变,但是现在测得的情况是没有改变。且程序停在while (!(*(volatile ioport int*)McBSP0_SPCR1_0 & 0x2)){};rrdy始终是为0。<br /> 下面是主要部分的源代码,希望大家帮我看看问题出在哪里!谢谢!!<br /><br />void init_board(void)<br />{<br /> <br /> *(volatile ioport int*)McBSP0_RCR1_0=0x0040; <br /> *(volatile ioport int*)McBSP0_RCR2_0=0x0002;<br /> *(volatile ioport int*)McBSP0_XCR1_0=0x0040;<br /> *(volatile ioport int*)McBSP0_XCR2_0=0x0002;<br /> *(volatile ioport int*)McBSP0_SRGR1_0=0x0101;<br /> *(volatile ioport int*)McBSP0_SRGR2_0=0x200f;<br /> *(volatile ioport int*)McBSP0_PCR0=0x0a00;<br /> *(volatile ioport int*)McBSP0_SPCR2_0=0x00c1;<br />*(volatile ioport int*)McBSP0_SPCR1_0=0x0001;<br /> <br /> <br /> <br />}<br /><br /><br /><br />/////////////////////////////////////////////////////////////////////////<br />void mcbsp0_write(int out_data) //function for writing<br />{<br /> *(volatile ioport int*)McBSP0_DXR1_0 = out_data;<br />}<br /><br />//////////////////////////////////////////////////////////////////////////<br />int mcbsp0_read() //function for reading<br />{<br />int tp; <br />tp=*(volatile ioport int*)McBSP0_DRR1_0;<br />return tp;<br />}<br /><br /><br />//////////////////////////////////////////////////////////////////<br /><br />void init_aic11()<br />{<br /><br />int val[8]={0x0001,0x0200,0x0001,0x0402,0x0001,0x0600,0x0001,0x0800};<br /> int i;<br /> <br /> <br /> for(i=1;i<8;i++)<br /> {<br /> while(!(*(volatile ioport int*)McBSP0_SPCR2_0 & 0x2)){};<br /> mcbsp0_write(val);<br /><br /> }<br />} <br /><br /><br /><br />#include "io.h"<br />#include <stdio.h><br /><br />void main()<br />{ <br /> <br /> int xrdy,rrdy,i=0,err=0,sam[N],rcv[N],xx;<br /> <br /> int sample;<br /> <br /> <br /> init_board();<br /> <br /> init_aic11();<br /><br /><br /><br /><br /> <br /> while(1)<br /> {<br /> while (!(*(volatile ioport int*)McBSP0_SPCR1_0 & 0x2)){};<br /> <br /> sample = mcbsp0_read(); <br /> <br /> while (!(*(volatile ioport int*)McBSP0_SPCR2_0 & 0x2)){};<br /> <br /> mcbsp0_write(sample&0xfffe);<br /> <br /> } <br /> <br /> <br />}<br /><br /> |
|