OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2908|回复: 1

求助,F767开发板SPI问题,附代码,请大神帮忙。想通过764的SPI接口控制一个外部的DAC芯片,按照芯片的F103例子进行了移植,可...

[复制链接]

1

主题

1

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-9-24
在线时间
13 小时
发表于 2020-4-9 10:43:52 | 显示全部楼层 |阅读模式
10金钱
想通过764的SPI接口控制一个外部的DAC芯片,按照芯片的F103例子进行了移植,可是实验中芯片没有反映。不知道哪里出了问题。DAC板子是TLV65610.
  1. <div>/////TLV56.C</div><div>#include "TLV56xx.H"
  2. </div>#include "delay.h"

  3. void DAC_Tlv56xx_Init(void)
  4. {
  5.         int i;
  6.         GPIO_InitTypeDef  GPIO_InitStructure;

  7.         __HAL_RCC_GPIOB_CLK_ENABLE();                            //&Ecirc;&sup1;&Auml;&Uuml;PC&para;&Euml;&iquest;&Uacute;&Ecirc;±&Ouml;&Oacute;
  8. __HAL_RCC_GPIOC_CLK_ENABLE();
  9.         __HAL_RCC_GPIOD_CLK_ENABLE();
  10.         GPIO_InitStructure.Pin = GPIO_PIN_9|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;               
  11.         GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;                 //&Iacute;&AElig;&Iacute;ì&Ecirc;&auml;&sup3;&ouml;
  12.         GPIO_InitStructure.Speed = GPIO_SPEED_FAST;                 //IO&iquest;&Uacute;&Euml;&Ugrave;&para;&Egrave;&Icirc;&ordf;50MHz
  13.         HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //&cedil;ù&frac34;&Yacute;&Eacute;è&para;¨&sup2;&Icirc;&Ecirc;&yacute;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;GPIOE
  14.         HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15,GPIO_PIN_RESET);                                           //PBA &Ecirc;&auml;&sup3;&ouml;&cedil;&szlig;
  15.        
  16.         GPIO_InitStructure.Pin = GPIO_PIN_7;               
  17.         GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;                 //&Iacute;&AElig;&Iacute;ì&Ecirc;&auml;&sup3;&ouml;
  18.         GPIO_InitStructure.Speed = GPIO_SPEED_FAST;                 //IO&iquest;&Uacute;&Euml;&Ugrave;&para;&Egrave;&Icirc;&ordf;50MHz
  19.         HAL_GPIO_Init(GPIOD, &GPIO_InitStructure);                                         //&cedil;ù&frac34;&Yacute;&Eacute;è&para;¨&sup2;&Icirc;&Ecirc;&yacute;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;GPIOD
  20.         HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_RESET);
  21.        
  22.         GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
  23.         GPIO_InitStructure.Pin =GPIO_PIN_9;
  24.         GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
  25.         HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
  26.        
  27.         LDAC_HIGH;       
  28.         FRE_HIGH;
  29.         delay_ms(100);
  30.         for(i = 0; i < 8; i++)
  31.                 TLV56XX_WriteChannelValue(i, 0);
  32.         delay_ms(50);
  33. }

  34. volatile  uint16_t Cmd;
  35. void WriteChannelValue(uint8_t channel, uint16_t value)
  36. {

  37.   int i;
  38.   uint16_t bit_state;
  39.   //TLV5610     12BIT
  40.   Cmd = (channel<<12)|((value)&0X0FFF);
  41.   
  42. //  LDAC_HIGH;
  43.   FS_HIGH;
  44.   FS_LOW;
  45.   for(i = 0; i < 16; i++)
  46.   {
  47.     SCLK_HIGH;
  48.     bit_state = Cmd&0X8000;
  49.     if(bit_state)
  50.       DATA_HIGH;
  51.     else
  52.       DATA_LOW;   
  53.     SCLK_LOW;
  54.     Cmd <<= 1;
  55.   }
  56.         FS_HIGH;  
  57.         LDAC_LOW;
  58. //  LDAC_LOW;
  59.        
  60.         LDAC_HIGH;
  61. }
  62. void TLV56XX_WriteChannelValue(uint8_t channel, uint16_t value)
  63. {
  64.         WriteChannelValue(channel, value);
  65. <div>}</div><div>
  66. </div><div>
  67. </div><div>///////<font style="background-color: rgb(255, 255, 255);">TLV56XX.H</font></div><div>#ifndef _TLV56XX_H_
  68. #define _TLV56XX_H_</div><div>#include <stdint.h>  
  69. #include "sys.h"
  70. </div><div>#define SCLK_HIGH     HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_SET)// TLV_SCK = 1  SCK--PB13
  71. #define DATA_HIGH     HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET) // TLV_DATA = 1  do--PB15
  72. #define FS_HIGH       HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET)//TLV_FS = 1  PB9
  73. #define LDAC_HIGH     HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET) //TLV_LDAC = 1  PB14
  74. #define FRE_HIGH      HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_SET) // TLV_FRE = 1   PD7</div><div>#define SCLK_LOW      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13,GPIO_PIN_RESET) //TLV_SCK = 0
  75. #define DATA_LOW      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET) // TLV_DATA = 0
  76. #define FS_LOW        HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET) //TLV_FS = 0
  77. #define LDAC_LOW      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET) // TLV_LDAC = 0
  78. #define FRE_LOW       HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_RESET) //TLV_FRE = 0</div><div>void DAC_Tlv56xx_Init(void);
  79. void WriteChannelValue(uint8_t channel, uint16_t value);
  80. void TLV56XX_WriteChannelValue(uint8_t channel, uint16_t value);</div><div>#endif</div><div>
  81. </div><div>
  82. ////main.c</div><div>#include "sys.h"
  83. #include "delay.h"
  84. #include "usart.h"
  85. #include "led.h"
  86. #include "key.h"
  87. #include "lcd.h"
  88. #include "sdram.h"
  89. #include "adc.h"
  90. #include "TLV56xx.H"
  91. </div><div>int main(void)
  92. {
  93. // MY_NVIC_PriorityGroup_Config(NVIC_PriorityGroup_2);
  94.     u16 adcx;
  95. float temp;
  96.     Cache_Enable();               
  97.     HAL_Init();           
  98.     Stm32_Clock_Init(432,25,2,9);   
  99.     delay_init(216);               
  100. uart_init(115200);         
  101.     LED_Init();                    
  102.     KEY_Init();                    
  103.     SDRAM_Init();                  
  104.     LCD_Init();                    
  105.    DAC_Tlv56xx_Init();
  106.     MY_ADC_Init();                 
  107. POINT_COLOR=RED;
  108. LCD_ShowString(30,50,200,16,16,"Apollo STM32F4/F7");
  109. LCD_ShowString(30,70,200,16,16,"ADC TEST");
  110. LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  111. LCD_ShowString(30,110,200,16,16,"2016/7/12");   
  112. POINT_COLOR=BLUE;
  113. LCD_ShowString(30,130,200,16,16,"ADC1_CH5_VAL:");      
  114. LCD_ShowString(30,150,200,16,16,"ADC1_CH5_VOL:0.000V");   
  115. TLV56XX_WriteChannelValue(0, 4095/8*1);
  116. TLV56XX_WriteChannelValue(1, 4095/8*2);
  117. TLV56XX_WriteChannelValue(2, 4095/8*3);
  118. TLV56XX_WriteChannelValue(3, 4095/8*4);
  119. TLV56XX_WriteChannelValue(4, 4095/8*5);
  120. TLV56XX_WriteChannelValue(5, 4095/8*6);
  121. TLV56XX_WriteChannelValue(6, 4095/8*7);
  122. TLV56XX_WriteChannelValue(7, 4095/8*8);
  123.     while(1)
  124. {
  125. //     DAC5618_translate_a(4095);
  126.         adcx=Get_Adc_Average(ADC_CHANNEL_5,20);
  127.   LCD_ShowxNum(134,130,adcx,4,16,0);   
  128.   temp=(float)adcx*(3.3/4096);         
  129.   adcx=temp;                          
  130.   LCD_ShowxNum(134,150,adcx,1,16,0);   
  131.   temp-=adcx;                          
  132.   temp*=1000;                          
  133.   LCD_ShowxNum(150,150,temp,3,16,0X80);
  134.   LED0_Toggle;
  135.   delay_ms(250);
  136. }
  137. }

  138. </div>
复制代码

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2020-5-27
在线时间
25 小时
发表于 2020-9-9 16:10:02 | 显示全部楼层
请问楼主成功了吗,我也遇到相同的问题
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-17 10:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表