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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3027|回復: 5
打印 上一主題 下一主題
收起左側

我想實現STM32F4驅動AD7705的功能,代碼如下,編譯沒有錯誤,求大佬幫忙看看

[復制鏈接]
跳轉到指定樓層
樓主
ID:797057 發表于 2020-7-13 16:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
#include "stm32f4xx.h"
#include "usart.h"
#include "lcd.h"
#include "delay.h"
#include "led.h"
#include "stdio.h"


void RCC_Configuration(void);
void GPIO_Configuration(void);
u16 SPIx_ReadWriteByte(u16 TxData);

void SPIx_Init(void);
u16 ReadTM7705(void);
uint8_t TM7705_Recive8Bit(void);
void TM7705_Send8Bit(uint8_t _data);


void Delay(vu32 nCount)
{
       for(; nCount != 0; nCount--);
}


void GPIO_Configuration(void)
{

        GPIO_InitTypeDef GPIO_InitStructure;
        /* Configure USART1 Rx (PB.8) as input floating  busy busy DRDY */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
              GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP ;
                    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
}

/********ÅäÖÃÏμí3ê±Öó,ê1Äü¸÷íaéèê±Öó***********/
void RCC_Configuration(void)
{
  SystemInit();        
  RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOA, ENABLE );
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1| RCC_APB2Periph_USART1, ENABLE);
}

/********TM77053õê¼»ˉoˉêy***********/
void TM7705_Init(void)
{         
        unsigned char i ;
        for(i = 0; i < 100; i++)
    {
        SPIx_ReadWriteByte(0xFF);                        
    }
        SPIx_ReadWriteByte(0x20) ;                    
        Delay(800);
        SPIx_ReadWriteByte(0x02) ;                  
        Delay(800);
        SPIx_ReadWriteByte(0x10) ;                        
        Delay(800);
        SPIx_ReadWriteByte(0x44) ;                        
        Delay(8000);
}

/********¶á16λêy¾Y************/
u16 ReadTM7705_16BitValue(void)
{
        //unsigned long
                                u16        DataL = 0;
       // unsigned long
                                u16        DataH = 0;
        //unsigned long
                                u16        Ret = 0;

        DataH =SPIx_ReadWriteByte(0xff);
              delay_ms(10);
               DataH = DataH << 8;

              DataL = SPIx_ReadWriteByte(0xff);

              delay_ms(10);
        Ret = DataH | DataL;

        return(Ret) ;                             
}

/********¶áè¡AD7705μúò»í¨μàêy¾Y************/
u16 ReadTM7705(void)
{


                u16        Ret = 0;

                 SPIx_ReadWriteByte(0x38) ;
  while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_10==1))
                                {
                                        ;
                                }            
        Ret = ReadTM7705_16BitValue();
        delay_ms(100);

        return Ret;
}


/****************************SPI3õê¼»ˉ*************************/
void SPIx_Init(void)
        {         
        SPI_InitTypeDef SPI_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOA, ENABLE);//
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

              GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1);
              GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1);
              GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1);

        /* Configure SPI1 pins: SCK, MISO and MOSI */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  //¸′óÃíÆíìêä3ö
       GPIO_InitStructure.GPIO_OType=GPIO_OType_PP ;
    //GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP ;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);

        /* Configure I/O for Flash Chip select */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  //SPI CS
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  //¸′óÃíÆíìêä3ö
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP ;
       GPIO_InitStructure.GPIO_OType=GPIO_OType_PP ;
       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        /* Deselect the FLASH: Chip Select high */
        GPIO_SetBits(GPIOA,GPIO_Pin_9);
       // GPIO_SetBits(GPIOA,GPIO_Pin_10);

                    SPI_Cmd(SPI1, DISABLE);

                    /* SPI1 configuration */
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;              
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;            
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;               
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;      
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;               
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;            
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;      
        SPI_InitStructure.SPI_CRCPolynomial = 7;         
        SPI_Init(SPI1, &SPI_InitStructure);           

        //SPI1->CR1|=1<<6;
        /* Enable SPI1  */
        SPI_Cmd(SPI1, ENABLE);

        SPIx_ReadWriteByte(0xff);              
}  



u16 SPIx_ReadWriteByte(u16 TxData)
{               
        GPIO_ResetBits(GPIOA,GPIO_Pin_9);        
        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); //

        /* Send byte through the SPI1 peripheral */
        SPI_I2S_SendData(SPI1, TxData)
        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //

        /* Return the byte read from the SPI bus */               
        GPIO_SetBits(GPIOA,GPIO_Pin_9);  

        return SPI_I2S_ReceiveData(SPI2); //·μ»Øí¨1ySPIx×î½ü½óêÕμÄêy¾Y   
}


/********Ö÷oˉêy************/
int main(void)
{         
u16 adcx;
float temp;

        RCC_Configuration();
        GPIO_Configuration();
              uart_init(76800);
        delay_init(168);
        LCD_Init();
              LED_Init();
              SPIx_Init();   
        TM7705_Init();

              POINT_COLOR=BLUE;
              LCD_ShowString(30,110,200,16,16,"ADC_CH1_VAL:");              
              LCD_ShowString(30,170,200,16,16,"ADC_CH1_VOLL:0.0000V");        

while(1)
      {
       //delay_ms(50);

       adcx = ReadTM7705();  

                   LCD_ShowxNum(134,110,adcx,5,16,0);   
                   temp=(float)adcx*(3.0/65535);         
             adcx=temp;                           
                   LCD_ShowxNum(134,170,adcx,1,16,0);   
                   temp-=adcx;                           
                   temp*=10000;                           
                   LCD_ShowxNum(150,170,temp,4,16,0X80);
                   LED0=!LED0;
                   delay_ms(200);        

        }


}


LCD顯示出來的一直是最大值65535。。。。應該是數據異常。。。。。。debug的時候SPI里面數據寄存器的數值好像不太正常。。。。求大神幫幫忙。。謝謝啦!


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

使用道具 舉報

沙發
ID:282850 發表于 2020-7-14 14:55 | 只看該作者
把AD7705的輸入端短接、把PGA調到最小試試,其它可能的問題也會是SPI程序錯誤
回復

使用道具 舉報

板凳
ID:797057 發表于 2020-7-14 16:50 | 只看該作者
f556 發表于 2020-7-14 14:55
把AD7705的輸入端短接、把PGA調到最小試試,其它可能的問題也會是SPI程序錯誤

短接了還是跟原來一樣。。。。。請問PGA是怎么調的。。。
回復

使用道具 舉報

地板
ID:801878 發表于 2020-7-28 10:19 | 只看該作者
、PGA相關的參數      bitmap_merge_area_size             -->位圖合并區分配的值     create_bitmap_area_size            -->創建位圖分配的值     hash_area_size                     -->主要用于hash join時分配的大小     sort_area_size                     -->排序所用的內存總量,影響one-pass,multi-pass,optimal     sort_area_retained_size            -->排序后在內存中保存排序信息的內存總量     這幾個參數在Oracle 9i之前被使用,在Oracle 9i可以對這幾個參數進行手動分配,亦可以由系統自動分配。
回復

使用道具 舉報

5#
ID:809311 發表于 2020-8-8 17:17 | 只看該作者
一邊調一邊看。
回復

使用道具 舉報

6#
ID:522756 發表于 2020-8-11 10:15 | 只看該作者
我只能說,你等著吧
就放一個工程出來,也不知道具體原因出在哪里,就等著別人給你解決
老鐵,你應該有一套自己的思路,然后哪里出了問題,別人好針對性的給你解決思路
比如說LCD,你直接說顯示不了,別人怎幫你
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区在线看 | 国产精品美女www爽爽爽视频 | 国产精品日韩在线观看 | 欧美成人免费 | 国产精品一区二区视频 | 日本天天操 | 一级做受毛片免费大片 | 一级毛片视频在线 | 国产成人精品久久二区二区 | 天天看片天天干 | 在线欧美一区二区 | 2019中文字幕视频 | 一区二区高清 | 色999日韩| 国产一区二区在线播放视频 | 久久伦理中文字幕 | 人人做人人澡人人爽欧美 | 日韩精品一区二区三区中文在线 | 亚洲国产一区二区在线 | 91精品久久久久久久久久入口 | 天天躁日日躁狠狠的躁天龙影院 | 伊人在线 | 综合久久综合久久 | 中文字幕精品一区二区三区在线 | 午夜精品在线 | 亚洲日日| 91亚洲视频在线 | 欧美videosex性极品hd | 国产三级精品三级在线观看四季网 | 日韩在线不卡 | 久久久亚洲成人 | 国产精品国产a级 | 国产小视频在线观看 | 国产成人精品网站 | 久久精品毛片 | 国产成人精品综合 | 亚洲午夜视频在线观看 | 一级欧美| 亚洲精品无 | 在线观看国产精品一区二区 | chinese中国真实乱对白 |