MC9S12D64的SPI0模块相关问题?请个位大侠帮忙解决
- UID
- 148044
- 性别
- 男
|
MC9S12D64的SPI0模块相关问题?请个位大侠帮忙解决
麻烦不断啊,请各位大侠帮我看看,解救我出苦海吧!fficeffice" />
单片机:MC9S12D64 DAC:TLV5604
简单描述一下硬件的连接:
单片机: SCK――――――DAC: SCK()
SS――――――――――FS(帧同步脚,下降沿表示移至TLV5604的串行数据帧的起始)
MOSI―――――――――DIN(串行数据输入)
这里单片机经过设置令M口工作在SPI0
[此贴子已经被作者于2006-10-9 8:38:11编辑过] |
|
|
|
|
|
- UID
- 148044
- 性别
- 男
|
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位,我该如何解决这个问题呢?
谢谢!
(上面的陈述中可能有错误,刚开始接触这些东西,所以理解的不够透彻)
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
SS如果用于SPI功能,那么它在一个字节发送完成后确实会有一个跳变的过程。如果你需要控制FS的电平,可能需要采用一个GPIO口来实现。 |
|
|
|
|
|
- UID
- 148044
- 性别
- 男
|
这款单片机能不能一次输出16位,ss在跳变呢?
如果没有这种功能,看来就只能用GPIO口来实现了 |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 148044
- 性别
- 男
|
|
|
|
|
|