北川   2024-07-07 16:46 采纳率: 0%
浏览 7

stm32f407 烧录9833

问题遇到的现象和发生背景

按照CSDN上面的教程在cubemx和keil里面写了9833的代码,代码没有问题,但是下载代码就没有现象

遇到的现象和发生背景,请写出第一个错误信息

代码没有报错

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include "spi.h"
#include "AD9833.h"

void AD9833_GPIOInit(void)
{
    CS_9833_1();
}//初始化AD9833相关的GPIO
void AD9833_Write(unsigned short TxData)
{
    unsigned char data[2];
    data[0]=(unsigned char )((TxData>>8)&0xff);
    data[1]=(unsigned char )(TxData&0xff);
    CS_9833_0();
    HAL_SPI_Transmit(&hspi2,data,2,0x02);
    CS_9833_1();
}//向9833发送一个16bit的数 TxData为要发送的数
/*
------------------------------------------------------------------
功能说明:设置AD9833的输出方式    
形参:Reset 0为有输出 1为无输出 此位只控制有无输出,不复位寄存器
            SleepMode 3关闭内部时钟和ADC 0不关闭
            optionbit|modebit 00正弦波 01三角波 10方波 11保留
------------------------------------------------------------------
*/
void AD9833_CtrlSet(unsigned char Reset,unsigned char SleepMode,unsigned char optionbit,unsigned char modebit)
{
    unsigned short regtmep=0;
    regtmep=regtmep|(((unsigned short )Reset&0x01)<<8);
    regtmep=regtmep|((SleepMode&0x03)<<6);
    regtmep=regtmep|((optionbit&0x01)<<5);
    regtmep=regtmep|((modebit&0x01)<<1);
    
    AD9833_Write(regtmep);
}
/*
------------------------------------------------------------------
功能说明:设置AD9833的输出频率,设置完后暂时不输出
形参: Freq :频率值 0.1hz - 12.5Mhz
       如需输出1Mhz,填入1000000
------------------------------------------------------------------
*/
void AD9833_FreqSet(double Freq)
{
    int frequence_LSB,frequence_MSB;
    double frequence_mid,frequence_DATA;
    long int frequence_hex;
    //频率换算
    frequence_mid=268435456/25;//使用25MHz外部时钟
    frequence_DATA=Freq;
    frequence_DATA=frequence_DATA/1000000;
    frequence_DATA=frequence_DATA*frequence_mid;
    frequence_hex=frequence_DATA;//32bit
    frequence_LSB=frequence_hex;//频率地位
    frequence_LSB=frequence_LSB&0x3fff;//14bit
    frequence_MSB=frequence_hex>>14;//频率高位
    frequence_MSB=frequence_MSB&0x3fff;//14bit
    
    //使用频率寄存器0输出波形
    frequence_LSB=frequence_LSB|0x4000;
    frequence_MSB=frequence_MSB|0x4000;
    
    AD9833_Write(0x2100);//选择数据一次写入,复位(无输出)
    AD9833_Write(frequence_LSB);//L14,选择频率寄存器0的低14位数据输入
    AD9833_Write(frequence_MSB);//M14,频率寄存器·的高14位数据输入
}

```下面是.h文件
#ifndef _AD9833_H_
#define _AD9833_H_
#include "main.h"
#define CS_9833_0() HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_RESET)
#define CS_9833_1() HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_SET)
void AD9833_GPIOInit(void);    
void AD9833_Write(unsigned short TxData);
void AD9833_CtrlSet(unsigned char Reset,unsigned char SleepMode,unsigned char optionbit,unsigned char modebit);
void AD9833_FreqSet(double Freq);
#endif



```下面是main函数里面的代码

    AD9833_GPIOInit();
    HAL_Delay(10);
    AD9833_FreqSet(1000);//
    AD9833_CtrlSet(0,0,1,0); //
运行结果及详细报错内容

代码没有问题,但是没有现象

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-07 16:47
    关注

    引自免费微信小程序:皆我百晓生

    根据你的描述和代码,你在使用STM32F407烧录AD9833时遇到了问题,代码没有报错,但是下载代码后没有任何现象。这种情况可能由多种原因造成,我将尝试给出一些可能的解决方案。

    1. 检查硬件连接:确保你的AD9833与STM32F407的连接正确,包括SPI通信线路、电源线路以及GPIO线路。任何连接错误都可能导致你的代码无法正常工作。
    2. 检查电源和地线:确保AD9833的电源供应充足并且稳定,同时确保地线连接良好。电源不稳定或地线连接不良可能会导致芯片无法正常工作。
    3. 检查晶振和时钟配置:AD9833需要稳定的时钟源来生成波形,确保你的STM32F407的晶振配置正确,并且时钟系统配置正确。你可以检查CubeMX中的时钟配置和STM32的时钟系统相关配置。
    4. 检查代码逻辑:虽然你提供的代码看起来没有明显的逻辑错误,但你还是需要确保所有函数都被正确调用,并且函数的逻辑符合你的需求。特别是AD9833_FreqSet函数中的频率计算部分,确保你的频率计算方式符合AD9833的要求。
    5. 使用逻辑分析仪或调试器:你可以使用逻辑分析仪或调试器来检查SPI通信的数据和时序是否正确,这有助于定位问题。
    6. 检查其他配置:检查你的STM32F407的其他配置,例如中断配置、GPIO配置等,确保这些配置不会影响到AD9833的正常工作。

    如果你仍然无法找到问题所在,我建议你在CSDN或者其他相关的技术论坛上发帖求助,提供详细的硬件信息、代码和调试信息,这样可能会有其他开发者能够帮助你解决问题。

    最后,如果可能的话,你可以尝试使用其他已知工作正常的AD9833模块或者其他的波形发生器模块来验证你的STM32F407的配置和代码是否正确。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月7日

悬赏问题

  • ¥20 c语言写的8051单片机存储器mt29的模块程序
  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大