久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3689|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

AD9851的STM32驅(qū)動(dòng)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
在下載過一個(gè)AD9851的51單片機(jī)的驅(qū)動(dòng)程序,結(jié)果串口無法使用。后閱讀AD9851芯片資料發(fā)現(xiàn)串口需要模式轉(zhuǎn)化,方法是W0輸入xxxxx011然后FQ_UD給一個(gè)上升沿則進(jìn)入串行通信模式,再給一個(gè)RESET信號(hào)則回到并行模式。奉上我自己寫的STM32的驅(qū)動(dòng)程序以供各位參考和使用。

單片機(jī)源程序如下:
  1. #include "AD9851.h"

  2. void AD9851_init(unsigned char w0, double frequence)
  3. {
  4.         GPIO_InitTypeDef  GPIO_InitStructure;
  5.         unsigned char w;
  6.         long int y;
  7.         double x;
  8.         //計(jì)算頻率的HEX值
  9.         x=4294967295/125;//適合125M晶振
  10.         //如果時(shí)鐘頻率不為125MHZ,修改該處的頻率值,單位MHz !!!
  11.         frequence=frequence/1000000;
  12.         frequence=frequence*x;
  13.         y=frequence;
  14.        
  15.         RCC_APB2PeriphClockCmd (AD9851_port_clk, ENABLE);
  16.        
  17.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  18.         GPIO_InitStructure.GPIO_Pin = AD9851_W_CLK_Pin | AD9851_FQ_UD_Pin | AD9851_RESET_Pin;
  19.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  20.        
  21.         GPIO_Init(AD9851_port, &GPIO_InitStructure);
  22.        
  23.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  24.         GPIO_Init(AD9851_data_port, &GPIO_InitStructure);
  25.        
  26.         AD9851_W_CLK_0;
  27.         AD9851_FQ_UD_0;
  28.         AD9851_RESET_0;
  29.        
  30.         AD9851_byte((w0 << 3));
  31.         AD9851_byte((y >> 24) & 0xff);
  32.         AD9851_byte((y >> 16) & 0xff);
  33.         AD9851_byte((y >> 8) & 0xff);
  34.         AD9851_byte(y & 0xff);
  35. }

  36. uchar AD9851_byte(uchar data)
  37. {
  38.         GPIO_Write(AD9851_data_port, data);
  39.         AD9851_W_CLK_1;
  40.         AD9851_DELAY;
  41.         AD9851_W_CLK_0;
  42. }

  43. void AD9851_init_serial(unsigned char w0, double frequence)
  44. {
  45.         GPIO_InitTypeDef  GPIO_InitStructure;
  46.         long int y = 0;
  47.         double x;
  48.         //計(jì)算頻率的HEX值
  49.         x=4294967295/125;//適合125M晶振
  50.         //如果時(shí)鐘頻率不為125MHZ,修改該處的頻率值,單位MHz !!!
  51.         frequence=frequence/1000000;
  52.         frequence=frequence*x;
  53.         y=frequence;
  54.        
  55.         RCC_APB2PeriphClockCmd (AD9851_port_clk, ENABLE);
  56.        
  57.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  58.         GPIO_InitStructure.GPIO_Pin = AD9851_W_CLK_Pin | AD9851_FQ_UD_Pin | AD9851_RESET_Pin | AD9851_D7_s_Pin;
  59.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  60.        
  61.         GPIO_Init(AD9851_port, &GPIO_InitStructure);
  62.         AD9851_W_CLK_0;
  63.         AD9851_FQ_UD_0;
  64.         AD9851_RESET_0;
  65.         AD9851_D7_s_0;
  66.         //串行數(shù)據(jù)初始化,記得此時(shí)W0出入xxxxx011.
  67.         AD9851_W_CLK_1;
  68.         AD9851_DELAY;
  69.         AD9851_W_CLK_0;
  70.         AD9851_DELAY;
  71.        
  72.         AD9851_FQ_UD_1;
  73.         AD9851_DELAY;
  74.         AD9851_FQ_UD_0;
  75.         AD9851_DELAY;
  76.        
  77.         AD9851_serial_byte((w0 << 3));
  78.         AD9851_serial_byte((y >> 24) & 0xff);
  79.         AD9851_serial_byte((y >> 16) & 0xff);
  80.         AD9851_serial_byte((y >> 8) & 0xff);
  81.         AD9851_serial_byte(y & 0xff);
  82.        
  83.         AD9851_FQ_UD_1;
  84.         AD9851_DELAY;
  85.         AD9851_FQ_UD_0;
  86. }

  87. uchar AD9851_serial_byte(uchar data)
  88. {
  89.         int i, bit;
  90.         for(i = 8;i > 0;i--)
  91.         {
  92.                 if(data & (0x01 << (i - 1)))
  93.                 {
  94.                         AD9851_D7_s_1;
  95.                         AD9851_W_CLK_1;
  96.                         AD9851_DELAY;
  97.                         AD9851_W_CLK_0;
  98.                 }
  99.                 else
  100.                 {
  101.                         AD9851_D7_s_0;
  102.                         AD9851_W_CLK_1;
  103.                         AD9851_DELAY;
  104.                         AD9851_W_CLK_0;
  105.                 }
  106.         }
  107. }

  108. void ad9850_reset()
  109. {
  110.         AD9851_W_CLK_0;
  111.         AD9851_FQ_UD_0;
  112.         //rest信號(hào)
  113.         AD9851_RESET_0;
  114.         AD9851_DELAY;
  115.         AD9851_RESET_1;
  116.         AD9851_DELAY;
  117.         AD9851_RESET_0;
  118. }
復(fù)制代碼

所有資料51hei提供下載:
AD9851.zip (4.08 KB, 下載次數(shù): 52)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美伊人久久久久久久久影院 | 欧美久久久久久 | 97久久久| 欧美一级欧美三级在线观看 | 男人视频网站 | 亚洲一在线| 久视频在线观看 | 美女黄网站视频免费 | 成人精品视频在线观看 | 国产视频黄色 | 日韩欧美一级精品久久 | 精品国产色 | 日本不卡一区二区三区 | 日本网站在线看 | 不卡一区二区三区四区 | 日韩在线中文 | 一区二区三区四区免费观看 | 精品videossex高潮汇编 | 99九九视频 | 2019天天操| 久草视频在线播放 | 国产一级黄色网 | 九九av| 久久久xx | 免费成人高清在线视频 | 一区二区三区在线免费观看 | 久久久蜜桃 | 成人日韩精品 | 91久久精品国产 | 日韩视频中文字幕 | 欧美日韩视频在线 | 免费看a | 97人人草 | 在线日韩中文字幕 | 久久国产福利 | 国产欧美一区二区三区久久人妖 | 亚洲视频欧美视频 | 亚洲视频一区在线播放 | 美女久久久久久久 | 国户精品久久久久久久久久久不卡 | www.狠狠干|