完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
DAC104S085的DIN,SCLK, SYNC分别与MSP430单片机P9.3、P9.1、P9.0连接,DAC参考电压3V,单片机时钟频率18.432MHz,SPI时钟频率18.4329=2.048MHz,SPI初始化如下: void Init_SPI2(void) { P9SEL |=BIT1+BIT3; P9SEL &=~BIT0; P9DIR|=BIT0+BIT1+BIT3; // P9OUT&=~BIT0; UCB2CTL1 |= UCSWRST ; // 复位SPI状态机 UCB2CTL0 |= UCMST+UCSYNC+UCMSB ; // 3-pin, 8-bit SPI master, MSB // UCB2CTL1 |= UCSSEL__SMCLK ; // 选择SCK参考源为SMCLK UCB2BR0 = 0x09 ; // SCK = SMCK/9 UCB2BR1 = 0 ; UCB2CTL1 &=~UCSWRST ; // SPI状态机使能 } SPI2发送数据程序如下: void TransceiveSPI2 (char txdata) //发送 { while (!(UCB2IFG & UCTXIFG)); // wait until last SPI-Transmission is finished UCB2TXBUF = txdata; // send 8 clocks "txdata" and SPI-clocks } 设置DAC OUT A程序如下: void SetDAC_A(unsigned int DigData) { unsigned int Data=0; Data=0x1000+DigData; //高四位0001 (00 0 1 设置A,更新输出) P9OUT &=~BIT0; __delay_cycles(18432); TransceiveSPI2((Data&0xFF00)>>8); //MSB // __delay_cycles(18432); TransceiveSPI2(Data&0x00FF); __delay_cycles(18432); P9OUT|=BIT0; } main函数如下: void main( ) { Init_CLK(); //系统时钟初始化 Init_SPI2(); // while(1) { SetDAC_A(0x200); //0x200---1.5V __delay_cycles(184320000); //10s延时 } } 通过检测发现,A输出一直不对,不知道问题出在哪儿?对DAC104进行操作,16位数据分两次写,两次操作间需要延时吗? |
|
相关推荐
1个回答
|
|
|
在操作DAC104S085时,16位数据需要分两次写入,每次写入8位。在两次操作之间是否需要延时,取决于DAC104S085的数据手册中对时序的要求。通常情况下,为了确保数据的准确性和稳定性,两次写入之间可能需要一定的延时。
对于DAC104S085,其数据手册中提到,每次写入数据后,需要等待一个同步脉冲(SYNC)来更新DAC输出。因此,在两次写入之间,需要确保同步脉冲已经完成,以避免数据冲突。 关于SPI初始化,您提供的代码片段已经包含了一些基本的设置,但似乎不完整。以下是完整的SPI初始化代码示例,适用于MSP430单片机: ```c void Init_SPI2(void) { P9SEL |= BIT1 + BIT3; // 设置P9.1和P9.3为SPI功能 P9SEL &= ~BIT0; // 设置P9.0为GPIO功能 P9DIR |= BIT0 + BIT1 + BIT3; // 设置P9.0、P9.1和P9.3为输出 UCB2CTL1 |= UCSWRST; // 进入复位状态 UCB2CTL0 = UCCKPH | UCMSB | UCMST | UCSYNC; // 设置为主模式、同步模式、3线SPI UCB2CTL1 = UCSSEL_2; // 使用SMCLK作为时钟源 UCB2BR0 = 0x02; // 设置SPI时钟分频 UCB2BR1 = 0; UCB2CTL1 &= ~UCSWRST; // 释放复位状态,开始SPI通信 } ``` 在这个初始化代码中,我们设置了P9.1(SCLK)、P9.3(DIN)和P9.0(SYNC)为SPI功能,并设置了SPI的主模式、同步模式和3线SPI。同时,我们使用了SMCLK作为时钟源,并设置了SPI时钟分频,以确保SPI时钟频率为2.048MHz。 在实际应用中,您需要根据DAC104S085的数据手册和MSP430单片机的具体型号,调整SPI初始化代码以满足您的要求。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
576 浏览 0 评论
1636 浏览 0 评论
2070 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1527 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1365 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1779浏览 29评论
2806浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1737浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1651浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1662浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-8 08:50 , Processed in 0.712563 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5371