DSP5402如何连接SPI接口的芯片?

[复制链接]
 楼主| jchen_2000 发表于 2007-10-7 21:45 | 显示全部楼层 |阅读模式
刚才没写完就不小心敲了回车键,不好意思。<br /><br />我用的是TI公司的TLC3544串行接口的A/D芯片,不知道如何用5402连接,感觉没有合适的IO口来模拟SPI接口。不知道各位高手有什么好建议?
hotpower 发表于 2007-10-7 21:54 | 显示全部楼层

配置

void&nbsp;LcdObj::LcdSpiSetup(void)<br />{<br />#if&nbsp;(ccsdebug&nbsp;==&nbsp;0)<br />/*-----------------------------------------------------------<br />&nbsp;&nbsp;硬件McBSP模块配置为SPI接口<br />实验目的:<br />&nbsp;&nbsp;演练硬件McBSP模块配置为SPI接口的应用。<br />------------------------------------------------------------*/<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SPCR1;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;0;<br />//&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;SPCR1_RRST);//禁止串口接收<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SPCR2;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;0;<br />//&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;SPCR2_XRST);//禁止串口发送<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SPCR1;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(0x02&nbsp;&lt&lt&nbsp;SPCR1_CLKSTP);//CLKSTP=10b<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;PCR;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_FSXM)&nbsp;&nbsp;//设置FSX引脚为输出,控制LCD12864的片选信号SS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;(0&nbsp;&lt&lt&nbsp;PCR_FSXP)&nbsp;&nbsp;//FSX引脚平时输出低电平(LCD12864的片选信号SS无效)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_CLKXM)&nbsp;//设置CLKX引脚为输出<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_CLKXP);//CLKXP引脚平时输出高电平<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SRGR1;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(0x07&nbsp;&lt&lt&nbsp;SRGR1_FWID)&nbsp;&nbsp;&nbsp;//0x00~0x07~0xff&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;(0x80&nbsp;&lt&lt&nbsp;SRGR1_CLKGDV);//速率0x80<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SRGR2;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(1&nbsp;&lt&lt&nbsp;SRGR2_CLKSM);//<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;RCR1;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(0x00&nbsp;&lt&lt&nbsp;RCR1_RFRLEN1);//8BIT<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;XCR1;//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(0x00&nbsp;&lt&lt&nbsp;XCR1_RFRLEN1);//8BIT<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;RCR2;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(0x02&nbsp;&lt&lt&nbsp;RCR2_RDATDLY);//0x01<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;XCR2;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(0x02&nbsp;&lt&lt&nbsp;XCR2_RDATDLY);//0x01<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SPCR2;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;SPCR2_GRST)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;SPCR2_XRST)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;SPCR2_FRST);<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />#else<br />/*-----------------------------------------------------------<br />&nbsp;&nbsp;硬件McBSP模块配置为普通IO软件模拟SPI时序<br />实验目的:<br />&nbsp;&nbsp;演练硬件McBSP模块配置为普通IO的应用.以备IO紧缺时急用。<br />------------------------------------------------------------*/<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SPCR1;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;SPCR1_RRST);//禁止串口接收<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SPCR2;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;SPCR2_XRST);//禁止串口发送<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;PCR;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_XIOEN)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_RIOEN);//设置收发为IO接口,DX输出,DR,CLKS输入<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_FSXM)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_CLKXM);//设置FSX,CLKX可做IO输出<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_FSRM)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_CLKRM);//设置FSR,CLKR可做IO输出<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;PCR_FSXP);//FSX信号=0<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_CLKXP);//CLKX信号=1<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_DX_STAT);//DX信号=1<br />#endif<br />}<br /><br /><br /><br /><br /><br /><br /><br />void&nbsp;LcdObj::LcdSend(unsigned&nbsp;char&nbsp;cData)<br />{<br />&nbsp;&nbsp;cData&nbsp;&=&nbsp;0xff;<br />#if&nbsp;(ccsdebug&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;McBSP1-&gtDXR1&nbsp;=&nbsp;cData;//发送串行数据或命令<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;SPCR2;<br />&nbsp;&nbsp;while((McBSP1-&gtSPSD&nbsp;&&nbsp;(1&nbsp;&lt&lt&nbsp;SPCR2_XRDY))&nbsp;==&nbsp;0)&nbsp;{//等待发送结束<br />&nbsp;&nbsp;&nbsp;&nbsp;__nop();<br />&nbsp;&nbsp;&nbsp;&nbsp;__nop();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />#else&nbsp;&nbsp;<br />unsigned&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;McBSP1-&gtSPSA&nbsp;=&nbsp;PCR;<br />&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;8;&nbsp;i&nbsp;++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;PCR_CLKXP);//CLKX信号=0<br />&nbsp;&nbsp;&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(cData&nbsp;&&nbsp;0x80)&nbsp;{//MSB最高位为1时<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_DX_STAT);//DX信号=1<br />&nbsp;}<br />&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;PCR_DX_STAT);//DX信号=0<br />&nbsp;}<br />&nbsp;cData&nbsp;&lt&lt=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_CLKXP);//CLKX信号=1<br />&nbsp;&nbsp;&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;McBSP1-&gtSPSD&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;PCR_DX_STAT);//DX信号=1<br />&nbsp;&nbsp;_delay_loop_(1);//延时等待<br />#endif&nbsp;&nbsp;<br />}<br /><br /> <br /> 相关链接:<a href='http://www.**/blog/hotpower/11708/message.aspx'>http://www.**/blog/hotpower/11708/message.aspx</a>
YEQINGCHI 发表于 2007-10-8 10:29 | 显示全部楼层

可以用mcbsp的spi模式来扩展SPI接口的芯片

  
 楼主| jchen_2000 发表于 2007-10-8 19:07 | 显示全部楼层

谢谢hotpower和YEQINGCHI 的热心回复

谢谢hotpower和YEQINGCHI&nbsp;的热心回复,我先学习一下,有问题再请教。
hotpower 发表于 2007-10-8 22:48 | 显示全部楼层

mcbsp的spi配置很简单,和其他SPI操作一样好用

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

本版积分规则

21

主题

30

帖子

1

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