2410 iis出现错误,跑飞

[复制链接]
2884|7
 楼主| zhlyp 发表于 2008-6-3 17:32 | 显示全部楼层 |阅读模式
DMA, DM, ST, AD, TI
&nbsp;&nbsp;&nbsp;&nbsp;ClearPending(BIT_DMA2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMOD&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;initialize&nbsp;philips&nbsp;UDA1341&nbsp;chip<br />&nbsp;&nbsp;&nbsp;&nbsp;init_1341(PLAY);&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;set&nbsp;BDMA&nbsp;interrupt<br />&nbsp;&nbsp;&nbsp;&nbsp;pISR_DMA2&nbsp;=&nbsp;(unsigned)dma2_done;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMSK&nbsp;&nbsp;&=&nbsp;~(BIT_DMA2);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />//&nbsp;initialize&nbsp;variables<br />&nbsp;&nbsp;&nbsp;&nbsp;f_nDMADone&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//DMA2&nbsp;Initialize<br />&nbsp;&nbsp;&nbsp;&nbsp;rDISRCC2&nbsp;=&nbsp;(0&lt&lt1)&nbsp;+&nbsp;(0&lt&lt0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//AHB,&nbsp;Increment<br />&nbsp;&nbsp;&nbsp;&nbsp;rDISRC2&nbsp;&nbsp;=&nbsp;((INT32T)(pWavFile));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rDIDSTC2&nbsp;=&nbsp;(1&lt&lt1)&nbsp;+&nbsp;(1&lt&lt0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//APB,&nbsp;Fixed<br />&nbsp;&nbsp;&nbsp;&nbsp;rDIDST2&nbsp;&nbsp;=&nbsp;((INT32T)IISFIFO);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//IISFIFO<br />&nbsp;&nbsp;&nbsp;&nbsp;rDCON2&nbsp;&nbsp;&nbsp;=&nbsp;(1&lt&lt31)+(0&lt&lt30)+(1&lt&lt29)+(0&lt&lt28)+(0&lt&lt27)+(0&lt&lt24)+(1&lt&lt23)+(0&lt&lt22)+(1&lt&lt20)+nSoundLen/2;<br />&nbsp;&nbsp;&nbsp;&nbsp;//Handshake,&nbsp;sync&nbsp;PCLK,&nbsp;TC&nbsp;int,&nbsp;single&nbsp;tx,&nbsp;single&nbsp;service,&nbsp;I2SSDO,&nbsp;I2S&nbsp;request,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//Auto-reload,&nbsp;half-word,&nbsp;size/2<br />&nbsp;&nbsp;&nbsp;&nbsp;rDMASKTRIG2&nbsp;=&nbsp;(0&lt&lt2)+(1&lt&lt1)+0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//No-stop,&nbsp;DMA2&nbsp;channel&nbsp;on,&nbsp;No-sw&nbsp;trigger&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//IIS&nbsp;Initialize<br />&nbsp;&nbsp;&nbsp;&nbsp;//Master,Tx,L-ch=low,iis,16bit&nbsp;ch.,CDCLK=384fs,IISCLK=32fs<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISCON&nbsp;=&nbsp;(1&lt&lt5)+(0&lt&lt4)+(0&lt&lt3)+(1&lt&lt2)+(1&lt&lt1);<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISMOD&nbsp;=&nbsp;(0&lt&lt8)&nbsp;+&nbsp;(2&lt&lt6)&nbsp;+&nbsp;(0&lt&lt5)&nbsp;+&nbsp;(0&lt&lt4)&nbsp;+&nbsp;(1&lt&lt3)&nbsp;+&nbsp;(1&lt&lt2)&nbsp;+&nbsp;(1&lt&lt0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISPSR&nbsp;=&nbsp;(2&lt&lt5)&nbsp;+&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Prescaler_A/B=3&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//Tx&nbsp;DMA&nbsp;enable,Rx&nbsp;DMA&nbsp;disable,Tx&nbsp;not&nbsp;idle,Rx&nbsp;idle,prescaler&nbsp;enable,stop<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISFCON&nbsp;=&nbsp;(1&lt&lt15)&nbsp;+&nbsp;(1&lt&lt13);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Tx&nbsp;DMA,Tx&nbsp;FIFO&nbsp;--&gt&nbsp;start&nbsp;piling....<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rIISCON&nbsp;|=&nbsp;0x1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;enable&nbsp;IIS&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;f_nDMADone&nbsp;==&nbsp;0);&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMSK&nbsp;|=&nbsp;BIT_DMA2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISCON&nbsp;=&nbsp;0x0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;IIS&nbsp;stop<br /><br /><br /><br /><br />void&nbsp;__irq&nbsp;dma2_done(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ClearPending(BIT_DMA2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;clear&nbsp;pending&nbsp;bit<br />&nbsp;&nbsp;&nbsp;&nbsp;f_nDMADone&nbsp;=&nbsp;1;<br />}<br /><br /><br /><br /><br />不懂为什么一到while(&nbsp;f_nDMADone&nbsp;==&nbsp;0);&nbsp;&nbsp;程序就跑飞呢?
 楼主| zhlyp 发表于 2008-6-3 17:34 | 显示全部楼层

跑飞的情况:声音在不断循环播放

  
阿南 发表于 2008-6-3 17:56 | 显示全部楼层

需要挂仿真器,查看它在什么情况下飞掉

  
 楼主| zhlyp 发表于 2008-6-4 09:36 | 显示全部楼层

能详细说一下吗?

我用的ads+h-jtag,只能发现在while(&nbsp;f_nDMADone&nbsp;==&nbsp;0);&nbsp;在这句跑飞
阿南 发表于 2008-6-4 09:52 | 显示全部楼层

采用混合模式,看是执行哪条汇编指令后飞掉的,是否是引起中

后飞掉的,看寄存器窗口PC值的变化
aibxyz 发表于 2008-6-4 13:27 | 显示全部楼层

应该是中断引起的

检查一下,你的中断向量都正确配置?还有中断服务程序正常处理了请求<br />
 楼主| zhlyp 发表于 2008-7-23 10:55 | 显示全部楼层

那么长时间,一直没解决

void&nbsp;__irq&nbsp;dma2_done(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ClearPending(BIT_DMA2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;clear&nbsp;pending&nbsp;bit<br />&nbsp;&nbsp;&nbsp;&nbsp;uart_printf(&quot;ok&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;f_nDMADone&nbsp;=&nbsp;1;<br />}<br />今天又重新调这个驱动<br />我发现我加了一句uart_printf(&quot;ok&quot;);没有输出<br />说明没调用中断服务程序就已经跑飞了<br />
 楼主| zhlyp 发表于 2008-7-23 11:28 | 显示全部楼层

会不会是硬件有错误呢?

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

93

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部