完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
DA转换部分程序如下,SPI的spisimo连接的DAC的DIN,SPI 的时钟连接DA的时钟。GPIO57脚连接的DA的片选信号,
。。。 #define SetLOAD GpioDataRegs.GPBDAT.bit.GPIO57=1; //将LOAD置高 #define ClrLOAD GpioDataRegs.GPBDAT.bit.GPIO57=0; //将LOAD置低 InitSpiaGpio();//将SPI的时钟和主设备输出设为功能引脚 GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0; // 配置GPIO17为GPIO口 GpioCtrlRegs.GPBDIR.bit.GPIO57 = 1; // 定义GPIO17输出引脚 GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0; // 禁止上啦 GPIO17引脚 EDIS; SetLOAD; //把刷新锁存控制信号拉高 WriteDAC(9,0,0);//选择DAC的WTM模式 temp=20;//REF=2.2V;VO(DACA|B|C|D) =REF* CODE/256 while(1) { WriteDAC(0,0,temp); //0.4V WriteDAC(1,0,temp*2); //0.8V WriteDAC(2,0,temp*3); //1.2V WriteDAC(3,0,temp*4); //1.6V delay(1500); //在此设断点,用万用表直接测量四路DA的输出电压值 } } void WriteDAC(unsigned char add,unsigned char rng,unsigned char vol) { unsigned short int data; data=0x0000; ///add是4个通道的地址 /// /// data = ((add<<12) | (rng<<4) | (vol<<0)); ClrLOAD;//低电平时在时钟信号的下降沿DA进行写数据 while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG ==1); //判断SPI的发送缓冲区是否是空的,等于0可写数据 SpiaRegs.SPITXBUF=data; //把发送的数据写如SPI发送缓冲区 while( SpiaRegs.SPISTS.bit.BUFFULL_FLAG==1); //当发送缓冲区出现满标志位时,开始琐存数据 delay(1500); SetLOAD; } void spi_init() { SpiaRegs.SPICCR.all =0x4f;///进入初始状态,数据在下降沿输出,自测禁止,16位数据模式 SpiaRegs.SPICTL.all =0x0006; // 使能主机模式,正常相位,使能主机发送,禁止接收 //溢出中断,禁止SPI中断; SpiaRegs.SPIBRR =0x0009; //SPI波特率 3.75 SpiaRegs.SPICCR.all =0xcf; //退出初始状态; SpiaRegs.SPIPRI.bit.FREE = 1; // 自由运行 } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2642 浏览 0 评论
720 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
3076 浏览 0 评论
3840 浏览 1 评论
1244 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 02:39 , Processed in 0.583751 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号