3372|3

27

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430x169 SPI 应用中出现问题,求大神帮助!! [复制链接]

本帖最后由 paulhyde 于 2014-9-15 04:11 编辑


1.中断程序发送数据,只能发送2个8位数据。如果程序中写发送3个8位数据,则实际情况,
 
  只发送第1个8位数据和第3个8位数据。

 

2.可以发送1个8位数,加上1个类似实例程序中的16位数,但是每发送一次,后面会发送一

   次别的信号(8+16=24位,不知道哪来的)

 

   

 

我用的是dac8532,必须传送24位的数据

 

 

 数据手册见附件

 

 

我的程序如下:

 

/*******************************************************************************

                                     DA程序
              
                    MSP430F169                    DAC8532
                  ---------------              --------------
                 |          P3.0 |-          -| /SYNC        |
                 |               |            |              |
                 |    SIMO0/P3.1 |-          -| Din          |
                 |               |            |              |
                 |    UCLK0/P3.3 |-          -| SCLK         |
                 |               |            |              |

*******************************************************************************/

#include  <msp430x16x.h>

//==============================================================================
unsigned char w_data_A=0x00;                //写数据到缓存器 A
unsigned char w_data_B=0x04;                //写数据到缓存器 B
unsigned char w_load_A=0x10;                //从缓存器 A 输出到 A 通道
unsigned char w_load_B=0x24;                //从缓存器 B 输出到 B 通道
//==============================================================================

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                
  P3SEL |= 0x0A;                            // P3.1,P3.3 选择 SPI 模式
  P3DIR |= 0x0B;                            // P3.0,P3.1,P3.3 设置输出
  P3OUT &= ~0x01;                           // SYNC 复位
  ME1 |= USPIE0;                            // 使能 USART0 SPI
  UCTL0 |= CHAR + SYNC + MM;                // 8位数据,SPI模式,主机模式
  UTCTL0 = CKPH + CKPL + SSEL1 + STC;       // SMCLK,三线模式
  /* CKPH = 1  UCLK时钟信号被延迟半个周期后用作SPICLK信号
     CKPL = 1  时钟信号的高电平为无效电平,数据在UCLK的下降沿输出,
               输入数据在UCLK的上升沿被锁存    (P236)                  */
  UBR00 = 0x02;                             // 波特率选择(低八位)
  UBR10 = 0x00;                             // 波特率选择(高八位)
  UMCTL0 = 0x00;                            // 波特率调整
  /* N = BRCLK/波特率, 整数部分低八位放入 UBR00,整数部分高八位放入
     UBR10,数部分*8后的整数部分为8位调整寄存器中1的个位数,均匀分布   */
  UCTL0 &= ~SWRST;                          // USART 初始化完毕
  CCTL0 = CCIE;                            
  CCR0 = 64-1;                              // ~ 390Hz Clock period
  /*               CCR0 = 定时时间 * 时钟源频率 - 1                    */
  TACTL = TASSEL_2 + MC_1;                  // SMCLK, 增计数模式
  _BIS_SR(LPM0_bits + GIE);                
}

#pragma vector=TIMERA0_VECTOR               // 定时器 A 中断程序
__interrupt void Timer_A(void)
{
  P3OUT |=  0x01;                           // SYNC 置位
  P3OUT &= ~0x01;                           // SYNC 复位
  //随便发2个8位数据
  TXBUF0 = 0x0f;
  TXBUF0 = 0x81;                                                    
}

 

dac8532.pdf

639.58 KB, 下载次数: 7

DA数据手册

此帖出自电子竞赛论坛

最新回复

本帖最后由 paulhyde 于 2014-9-15 04:11 编辑 楼主,你的DAC8532后来调出来了吗?我现在也调不出来 望指导    详情 回复 发表于 2013-7-25 17:11

点评

楼主,你的DAC8532后来调出来了吗?我现在也调不出来 望指导  详情 回复 发表于 2013-7-25 17:11
点赞 关注
 
 

回复
举报

27

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
本帖最后由 paulhyde 于 2014-9-15 04:11 编辑

木有人回复啊!!!自己顶一个!!!

 

此帖出自电子竞赛论坛
 
 
 

回复

27

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
本帖最后由 paulhyde 于 2014-9-15 04:11 编辑

求回复求教育!!!

 

此帖出自电子竞赛论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(高级)

4
 

回复 楼主384568478 的帖子

本帖最后由 paulhyde 于 2014-9-15 04:11 编辑

楼主,你的DAC8532后来调出来了吗?我现在也调不出来 望指导

 

此帖出自电子竞赛论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表