[资料分享] ADS7818驱动程序--Verilog程序

[复制链接]
778|1
 楼主| xyz549040622 发表于 2020-1-27 14:10 | 显示全部楼层 |阅读模式
  1. 标签: A/D  
  2. ADS7818控制程序 C程序 Verilog程序
  3. //************************AVR单片机 C程序*****************************
  4. //ADS7818采用SPI模式采样

  5. #define CLK_SET  PORTC|=(1<<6)     
  6. #define CLK_CLI  PORTC&=~(1<<6)

  7. #define CONV_SET  PORTC|=(1<<5)
  8. #define CONV_CLI  PORTC&=~(1<<5)


  9. //****************************ADS7818采样程序********************************
  10. //晶振16M
  11. //ADS7818采用SPI模式采样

  12. unsigned int ADS7818(void)
  13. {
  14. unsigned int ADdata=0;
  15. unsigned char i;

  16.   
  17.   CONV_CLI;           //conv低
  18.   CLK_SET;   //1clk   //clk高
  19.   _NOP();
  20.   CLK_CLI;             //clk低
  21.   _NOP();
  22.   CLK_SET;   //2clk     //clk高
  23.    _NOP();
  24.   
  25.   for(i=0;i<12;i++)
  26.   {
  27.    CLK_CLI;             //clk低
  28.    _NOP();
  29.    CLK_SET;             //clk高
  30.    _NOP();
  31.    
  32.    
  33.    ADdata=ADdata<<1;
  34.    if(PINC&0x80)
  35.     {
  36.      ADdata|=0x0001;
  37.     }
  38.    else
  39.     {
  40.      ADdata&=0xFFFE;
  41.     }
  42.   
  43.    
  44.   }
  45.    CLK_CLI;            //clk低
  46.    _NOP();
  47.   CLK_SET;  //15 clk   //clk高
  48.   _NOP();
  49.   CLK_CLI;             //clk低
  50.   _NOP();
  51.   CLK_SET;  //16 clk   //clk高
  52.   _NOP();
  53.   CLK_CLI;             //clk拉低
  54.   _NOP();
  55.   CONV_SET; //CONV拉高
  56.   _NOP();    //至少保持350ns
  57.   _NOP();
  58.   _NOP();
  59.   _NOP();
  60.   _NOP();
  61.   _NOP();
  62.   _NOP();
  63.   _NOP();
  64.   _NOP();
  65.   ADdata=ADdata&0x0FFF;
  66. return ADdata;
  67. }



  68. //**********************verilog语言控制ADS7818*********************



  69. //ADS7818采用DSP模式采样
  70. /************************************************************************************
  71. **读取ADS7818数据
  72. **clk为50M

  73. ***************************************************************************************/
  74. module read_7818(clk,rst,CLK_7818,DATA_7818,CONV_7818,AD_result);
  75. input clk;
  76. input rst;
  77. input DATA_7818;

  78. output CLK_7818;
  79. output CONV_7818;
  80. output [11:0]AD_result;



  81. reg CLK_7818;
  82. reg CONV_7818;
  83. reg [11:0]AD_result;



  84. reg [1:0]num_80ns;
  85. reg clk_80ns;
  86. //*******************************分频程序**********************
  87. always @(posedge clk)
  88. begin
  89.   if(num_80ns==2'd1)
  90.      begin
  91.        num_80ns=2'd0;
  92.        clk_80ns=~clk_80ns;
  93.      end
  94.   else
  95.      begin
  96.       num_80ns=num_80ns+1'b1;
  97.      end

  98. end


  99. //************************************控制时序****************************

  100. reg [5:0]state_7818;
  101. reg [11:0]AD_reg;             //采样数据缓存

  102. always @(posedge clk_80ns or negedge rst)
  103. begin
  104.   if(!rst)
  105.     begin
  106.         state_7818<=6'd0;

  107.     end
  108.   else
  109.     begin
  110.        case(state_7818)
  111.           0:                        
  112.             begin
  113.                CLK_7818<=1'b0;
  114.                state_7818<=6'd1;
  115.             end
  116.           1:                        //clk up 1
  117.             begin
  118.                CLK_7818<=1'b1;
  119.                CONV_7818<=1'b1;
  120.                state_7818<=6'd2;
  121.    
  122.             end      
  123.           2:
  124.             begin
  125.                
  126.                CLK_7818<=1'b0;            
  127.                state_7818<=6'd3;
  128.             end      
  129.           3:                       //clk up 2  
  130.             begin
  131.               
  132.                CLK_7818<=1'b1;  
  133.                AD_reg[11]<=DATA_7818;   
  134.                state_7818<=6'd4;
  135.             end
  136.           4:
  137.             begin
  138.                
  139.                CLK_7818<=1'b0;            
  140.                state_7818<=6'd5;
  141.             end
  142.           5:                       //clk up 3  
  143.             begin
  144.                CLK_7818<=1'b1;
  145.                AD_reg[10]<=DATA_7818;            
  146.                state_7818<=6'd6;
  147.             end
  148.           6:
  149.             begin
  150.                CLK_7818<=1'b0;            
  151.                state_7818<=6'd7;

  152.             end
  153.           7:                     //clk up 4
  154.             begin
  155.                CLK_7818<=1'b1;  
  156.                AD_reg[9]<=DATA_7818;
  157.                state_7818<=6'd8;
  158.             end
  159.           8:
  160.             begin
  161.                CLK_7818<=1'b0;            
  162.                state_7818<=6'd9;
  163.             end
  164.           9:                     //clk up 5
  165.             begin
  166.                CLK_7818<=1'b1;   
  167.                AD_reg[8]<=DATA_7818;
  168.                state_7818<=6'd10;
  169.             end
  170.           10:
  171.             begin
  172.                CLK_7818<=1'b0;            
  173.                state_7818<=6'd11;
  174.             end
  175.           11:                     //clk up 6
  176.             begin
  177.                CLK_7818<=1'b1;   
  178.                AD_reg[7]<=DATA_7818;
  179.                state_7818<=6'd12;
  180.             end
  181.           12:
  182.             begin
  183.                CLK_7818<=1'b0;            
  184.                state_7818<=6'd13;
  185.             end
  186.           13:                     //clk up 7
  187.             begin
  188.                CLK_7818<=1'b1;   
  189.                AD_reg[6]<=DATA_7818;
  190.                state_7818<=6'd14;
  191.             end
  192.           14:
  193.             begin
  194.                CLK_7818<=1'b0;            
  195.                state_7818<=6'd15;
  196.             end
  197.           15:                     //clk up 8
  198.             begin
  199.                CLK_7818<=1'b1;   
  200.                AD_reg[5]<=DATA_7818;
  201.                state_7818<=6'd16;
  202.             end
  203.           16:
  204.             begin
  205.                CLK_7818<=1'b0;            
  206.                state_7818<=6'd17;
  207.             end
  208.           17:                     //clk up 9
  209.             begin
  210.                CLK_7818<=1'b1;   
  211.                AD_reg[4]<=DATA_7818;
  212.                state_7818<=6'd18;
  213.             end
  214.           18:
  215.             begin
  216.                CLK_7818<=1'b0;            
  217.                state_7818<=6'd19;
  218.             end
  219.           19:                     //clk up 10
  220.             begin
  221.                CLK_7818<=1'b1;   
  222.                AD_reg[3]<=DATA_7818;
  223.                state_7818<=6'd20;
  224.             end
  225.           20:
  226.             begin
  227.                CLK_7818<=1'b0;            
  228.                state_7818<=6'd21;
  229.             end
  230.           21:                     //clk up 11
  231.             begin
  232.                CLK_7818<=1'b1;   
  233.                AD_reg[2]<=DATA_7818;
  234.                state_7818<=6'd22;
  235.             end
  236.           22:
  237.             begin
  238.                CLK_7818<=1'b0;            
  239.                state_7818<=6'd23;
  240.             end
  241.           23:                     //clk up 12
  242.             begin
  243.                CLK_7818<=1'b1;   
  244.                AD_reg[1]<=DATA_7818;
  245.                state_7818<=6'd24;
  246.             end
  247.           24:
  248.             begin
  249.                CLK_7818<=1'b0;            
  250.                state_7818<=6'd25;

  251.             end
  252.           25:                     //clk up  13
  253.             begin
  254.                CLK_7818<=1'b1;   
  255.                AD_reg[0]<=DATA_7818;
  256.                state_7818<=6'd26;
  257.             end
  258.           26:
  259.             begin
  260.                CLK_7818<=1'b0;            
  261.                state_7818<=6'd27;
  262.             end
  263.           27:                     //clk up  14
  264.             begin
  265.                CLK_7818<=1'b1;   
  266.                state_7818<=6'd28;
  267.             end
  268.           28:
  269.             begin
  270.                CLK_7818<=1'b0;            
  271.                state_7818<=6'd29;
  272.             end
  273.           29:                     //clk up  15
  274.             begin
  275.                CLK_7818<=1'b1;   
  276.                AD_result<=AD_reg;           //将采集的12位数据打入出输出
  277.                state_7818<=6'd30;

  278.             end
  279.           30:
  280.             begin
  281.                CLK_7818<=1'b0;            
  282.                state_7818<=6'd31;
  283.             end
  284.           31:                     //clk up  16
  285.             begin
  286.                
  287.                CLK_7818<=1'b1;   
  288.                CONV_7818<=1'b0;
  289.                state_7818<=6'd0;
  290.                
  291.             end

  292.           default:
  293.             begin
  294.             end

  295.        endcase
  296.     end

  297. end




  298. endmodule


 楼主| xyz549040622 发表于 2020-1-27 14:10 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2841

主题

19330

帖子

110

粉丝
快速回复 在线客服 返回列表 返回顶部