tan90-_-

    1. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-03
      修改也就是对于SPI引脚的操作相应的修改吧,那些我都修改过并测试过了,但是还是无法初始化成功,不知道为什么。
    2. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-03
      littleshrimp 发表于 2019-4-3 18:52 你要把这个改成和stm32对应的 程序我发了一个rar包 那个就是我当时测试的
      修改的话也就是对于SPI的引脚操作进行相应修改吧,那些我都修改并且测试过了,但是还是无法初始化成功,我私信您了,您看方不方便加一下联系方式我再向您详细请教,谢谢。
    3. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-03
      littleshrimp 发表于 2019-4-3 18:52 你要把这个改成和stm32对应的 程序我发了一个rar包 那个就是我当时测试的
      对应的话,也就是把最下面的操作SPI引脚的操作相应的修改一下,那些操作我都修改并且测试过了,但是初始化还是不成功,下面是我的代码,我搞底层的东西有些头疼 #define SCLK_Pin GPIO_PIN_0 #define SCLK_GPIO_Port GPIOA #define SDO_Pin GPIO_PIN_1 #define SDO_GPIO_Port GPIOA #define SDIO_Pin GPIO_PIN_2 #define SDIO_GPIO_Port GPIOA #define CS_Pin GPIO_PIN_3 #define CS_GPIO_Port GPIOA #define TRIGGER_Pin GPIO_PIN_4 #define TRIGGER_GPIO_Port GPIOA #define RESET_Pin GPIO_PIN_5 #define RESET_GPIO_Port GPIOA /* USER CODE BEGIN Private defines */ #define SPI_SCLK_LOW()           GPIOA->ODR&=0XFFFE;  //PA0拉低 #define SPI_SCLK_HIGH()          GPIOA->BSRR=0X0001;  //PA0拉高 #define SPI_SDO_LOW()            GPIOA->ODR&=0XFFFD;  //A1 #define SPI_SDO_HIGH()           GPIOA->BSRR=0X0002;   #define SPI_SDI()                HAL_GPIO_ReadPin( GPIOA , GPIO_PIN_2 ) //#define SPI_SDI_INIT()    HAL_GPIO_WritePin( &GPIOA,  SCLK_Pin , SET); #define CS_LOW()                 GPIOA->ODR&=0XFFF7;   //A3 #define CS_HI()                  GPIOA->BSRR=0X0008;   #define TRIGGER_LOW()            GPIOA->ODR&=0XFFEF;   //A4 #define TRIGGER_HI()             GPIOA->BSRR=0X0010;   #define REST_LOW()               GPIOA->ODR&=0XFFDF;   //A5 #define REST_HI()                GPIOA->BSRR=0X0020;   /*下面是main函数*/ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32f4xx_hal.h" /* USER CODE BEGIN Includes */ #include #include "hal_spi.h" #include "stdbool.h" /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/   uint8_t a=0; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE END PFP */ /* USER CODE BEGIN 0 */ #define SRAM_START_ADDRESS   0x6000 #define SRAM_END_ADDRESS     0x6FFF const uint32_t PAT_TYPE    = 0x001F0000;//模式连续运行。 //RSET如果不设置成1F输出波形会变形 const uint32_t DACRSET     = 0x000c9f1F;//DAC_RSET_EN, //const uint32_t DACRSET     = 0x000c1f00;//DAC_RSET_EN = 0, //正弦波输出 const uint32_t WAV_CONFIG  = 0x00271031;//DDS输出,预存波形 //锯齿波输出 //const uint32_t WAV_CONFIG  = 0x00270011;//锯齿波,预存波形 const uint32_t SAW_CONFIG  = 0x003700FC;//上斜坡锯齿波 //数字增益影响输出波形的幅度,应该是二进制补码,范围是+-2048 const uint32_t DAC_DGAIN   = 0x00354000;//Data=0x4000  Very important,the maximum value is 0x4000 const uint32_t DDS_TW32    = 0x003E006C;//Register 0x3E, Data=0x0E38 const uint32_t DDS_TW1     = 0x003FE600;//Register 0x3F, Data=0xE600           5MHz output,50MHz fsys const uint32_t PAT_STATUS  = 0x001E0001;//PAT_STATUS 0x1E, run bit=1           Very important const uint32_t RAMUPDATE   = 0x001D0001;//用新配置更新所有SPI设置(自清零) uint8_t buf[5]; char sbuf[50]; void hal_spi_write_uint32(uint32_t data) {   CS_LOW( );   hal_spi_read_write_byte(data >> 24);   hal_spi_read_write_byte(data >> 16);   hal_spi_read_write_byte(data >> 8);   hal_spi_read_write_byte(data);   CS_HI( ); } void hal_spi_write_uint16(uint16_t addr,uint16_t data) {   CS_LOW( );   hal_spi_read_write_byte(addr >> 8);   hal_spi_read_write_byte(addr);   hal_spi_read_write_byte(data >> 8);   hal_spi_read_write_byte(data);     CS_HI( ); } void ad9102_init(void) {   CS_HI( );   TRIGGER_HI();   REST_LOW(); //  __delay_cycles(65500);     HAL_Delay(200);   REST_HI();      hal_spi_write_uint32(PAT_TYPE); //  hal_spi_read_write_byte   hal_spi_write_uint32(DACRSET);   hal_spi_write_uint32(WAV_CONFIG);   hal_spi_write_uint32(SAW_CONFIG);        hal_spi_write_uint32(DAC_DGAIN);   hal_spi_write_uint32(DDS_TW32);   hal_spi_write_uint32(DDS_TW1);   hal_spi_write_uint32(RAMUPDATE);   hal_spi_write_uint32(PAT_STATUS);   hal_spi_write_uint32(RAMUPDATE);   HAL_Delay(10);   TRIGGER_LOW();   hal_spi_write_uint32(RAMUPDATE);    } /* USER CODE END 0 */ int main(void) {   /* USER CODE BEGIN 1 */   /* USER CODE END 1 */   /* MCU Configuration----------------------------------------------------------*/   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */   HAL_Init();   /* USER CODE BEGIN Init */   /* USER CODE END Init */   /* Configure the system clock */   SystemClock_Config();   /* USER CODE BEGIN SysInit */   /* USER CODE END SysInit */   /* Initialize all configured peripherals */   MX_GPIO_Init();   /* USER CODE BEGIN 2 */      ad9102_init();         /* USER CODE END 2 */   /* Infinite loop */   /* USER CODE BEGIN WHILE */   while (1)   {   /* USER CODE END WHILE */   /* USER CODE BEGIN 3 */     HAL_Delay(2);       }   /* USER CODE END 3 */ } /** System Clock Configuration */ void SystemClock_Config(void) {   RCC_OscInitTypeDef RCC_OscInitStruct;   RCC_ClkInitTypeDef RCC_ClkInitStruct;     /**Configure the main internal regulator output voltage     */   __HAL_RCC_PWR_CLK_ENABLE();   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);     /**Initializes the CPU, AHB and APB busses clocks     */   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;   RCC_OscInitStruct.HSIState = RCC_HSI_ON;   RCC_OscInitStruct.HSICalibrationValue = 16;   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)   {     _Error_Handler(__FILE__, __LINE__);   }     /**Initializes the CPU, AHB and APB busses clocks     */   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)   {     _Error_Handler(__FILE__, __LINE__);   }     /**Configure the Systick interrupt time     */   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);     /**Configure the Systick     */   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);   /* SysTick_IRQn interrupt configuration */   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } /** Configure pins as         * Analog         * Input         * Output         * EVENT_OUT         * EXTI */ static void MX_GPIO_Init(void) {   GPIO_InitTypeDef GPIO_InitStruct;   /* GPIO Ports Clock Enable */   __HAL_RCC_GPIOA_CLK_ENABLE();   /*Configure GPIO pin Output Level */   HAL_GPIO_WritePin(GPIOA, SCLK_Pin|SDO_Pin|CS_Pin|TRIGGER_Pin                           |RESET_Pin, GPIO_PIN_RESET);   /*Configure GPIO pins : SCLK_Pin SDO_Pin CS_Pin TRIGGER_Pin                            RESET_Pin */   GPIO_InitStruct.Pin = SCLK_Pin|SDO_Pin|CS_Pin|TRIGGER_Pin                           |RESET_Pin;   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;   GPIO_InitStruct.Pull = GPIO_NOPULL;   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);   /*Configure GPIO pin : SDIO_Pin */   GPIO_InitStruct.Pin = SDIO_Pin;   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;   GPIO_InitStruct.Pull = GPIO_NOPULL;   HAL_GPIO_Init(SDIO_GPIO_Port, &GPIO_InitStruct); } /* USER CODE BEGIN 4 */ /* USER CODE END 4 */ /**   * @brief  This function is executed in case of error occurrence.   * @param  None   * @retval None   */ void _Error_Handler(char * file, int line) {   /* USER CODE BEGIN Error_Handler_Debug */   /* User can add his own implementation to report the HAL error return state */   while(1)   {   }   /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /**    * @brief Reports the name of the source file and the source line number    * where the assert_param error has occurred.    * @param file: pointer to the source file name    * @param line: assert_param error line source number    * @retval None    */ void assert_failed(uint8_t* file, uint32_t line) {   /* USER CODE BEGIN 6 */   /* User can add his own implementation to report the file name and line number,     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */   /* USER CODE END 6 */ } #endif /**   * @}   */ /**   * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /*上面是main函数*/ /*相关SPI*/ #include "hal_spi.h" #include "main.h" #include "stm32f4xx_hal.h" void hal_delay_us1(uint16_t us) {     uint16_t i=us*16;    while(i>0)      i--; } //void hal_spi_init(void) //{ //   SPI_SDI_INIT(); //} uint8_t hal_spi_read_write_byte(uint8_t tx_byte) {     unsigned char i,temp=0;     SPI_SCLK_LOW();     hal_delay_us1(1);     for(i=0;i
    4. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-03
      我用了您的这个函数 hal_spi_read_write_byte(uint8_t tx_byte),但是返回值跟我发的值是一样的,这个正常吗?
    5. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-03
      littleshrimp 发表于 2019-4-3 14:56 我用的50M的有源晶振
      您方不方便加一下我的联系方式,我有些问题想向您请教一下,多谢!QQ:1187484261
    6. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-03
      496664962 发表于 2018-4-24 19:31 不使用SRAM是正常的,也就是用的您的初始化函数 #else//初始化成功,锯齿波和正弦波都行 void AD9102_I ...
      您能把您当时的程序发给我一份吗,我现在初始化老是不成功,不知道问题出在哪里。
    7. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-03
      littleshrimp 发表于 2019-4-3 10:36 写好的数据再读出来试试
      请问一下您最后的时钟输入选择的是什么呢,我现在是用信号发生器产生的2Mhz的方波信号。
    8. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-03
      littleshrimp 发表于 2019-4-3 06:32 看看spi通信正常吗
      我用的你那个初始化程序,初始化完之后,我修改BGDR寄存器的值,但是那个REFIO引脚的电压一直是0,应该是没初始化成功,技术较菜,求指点。
    9. AD9102 DDS不输出(已解决) 52/33670 ADI参考电路 2019-04-02
      楼主,你之前发的那个驱动程序是能用的吗?为什么我用32移植之后感觉用不了?

最近访客

< 1/1 >

统计信息

已有1人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:9

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言