Board logo

标题: MC9S12D64的SPI0模块相关问题?请个位大侠帮忙解决 [打印本页]

作者: liminjinzhi    时间: 2006-10-9 08:38     标题: MC9S12D64的SPI0模块相关问题?请个位大侠帮忙解决

麻烦不断啊,请各位大侠帮我看看,解救我出苦海吧!fficeffice" />

单片机:MC9S12D64        DACTLV5604

简单描述一下硬件的连接:

单片机: SCK――――――DAC SCK()

         SS――――――――――FS(帧同步脚,下降沿表示移至TLV5604的串行数据帧的起始)

MOSI―――――――――DIN(串行数据输入)

 

这里单片机经过设置令M口工作在SPI0

[此贴子已经被作者于2006-10-9 8:38:11编辑过]


作者: liminjinzhi    时间: 2006-10-9 08:41

DAC的数据是16位的,高四位是控制DAC的状态的,低12位才是需转换的数据。所以是12位转换精度的。
当时设计硬件的时候的想法:单片机的SS(DAC的FS)由高变低时,单片机开始输出数据,DAC开始读入数据。
目前的问题是:时钟信号 数据信等都正常了 各方面看来,单片机没有问题了,目前怀疑是DAC的问题 导致DAC无法工作。
分析:DAC是16位的,而单片机8位输出,所以DAC转换一次单片机需要2次数据输出,才够16位,所以令单片机先输出高八位,后低八位。
发现单片机每发玩8位,SS就会有低到高的跳变,所以传完16位的过程中,ss有一次变高的时段,所以整个16位数据传送工程对于DAC来说是被打断了一次的,所以我猜想是这里就是我DAC没有工作的关键吧。(因为DAC工作应该是FS变低后开始读入数据,知道数据读完FS变高。)
但是SS脚在工作于SPI时只有2总状态:1。SS output; 2。SS not used by spi
由于SS是要给DAC提供信号的就必须工作于输出状态(将modfen 和ssoe置位),所以该如何修改才能让DAC工作呢?
不知道我的陈述是否清楚,不知道各位大侠们认为我对问题的猜测是否正确?
如果单片机不能一次输出16位,我该如何解决这个问题呢?
谢谢!

(上面的陈述中可能有错误,刚开始接触这些东西,所以理解的不够透彻)

作者: strongchen    时间: 2006-10-9 09:20

SS如果用于SPI功能,那么它在一个字节发送完成后确实会有一个跳变的过程。如果你需要控制FS的电平,可能需要采用一个GPIO口来实现。
作者: liminjinzhi    时间: 2006-10-9 11:22

这款单片机能不能一次输出16位,ss在跳变呢?
如果没有这种功能,看来就只能用GPIO口来实现了
作者: strongchen    时间: 2006-10-9 14:12

好像是没有的。
作者: liminjinzhi    时间: 2006-10-9 20:33

好的,明白了,谢谢strongchen




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0