在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ADXL345 與 PT32L007 IIC通訊源代碼分享

Rickluo ? 來(lái)源:Rickluo ? 作者:Rickluo ? 2024-06-07 10:04 ? 次閱讀

#include "PT32x007x.h"
#include "string.h"
#include "filter.h"

#include "gpio_i2c.h"

#define READ_ADDR 0xA7
#define DEVICE_ADDR 0xA6

u8 arry_write[8]={0x0B,0x08,0x08,0x80,0x00,0x00,0x00};
u8 arry_read[7]={0};

float anglex = 0.0 ;
float angley = 0.0 ;
float anglez = 0.0 ;

void Software_Delay(u32 val)//延時(shí)函數(shù)
{
while(val)
{
val--;
}
}
/*******************************************************************************
*Function: UART_GPIO_Config
*Description: 配置UART引腳
*Input: 無(wú)
*Return: 無(wú)

*Others:
該函數(shù)負(fù)責(zé)使能UART模塊相關(guān)引腳
*******************************************************************************/
void UART_GPIO_Config(void)
{
/* 配置UART管腳的復(fù)用功能 */
GPIO_DigitalRemapConfig(AFIOD, GPIO_Pin_5, AFIO_AF_0,ENABLE); //PD5 TX0
GPIO_DigitalRemapConfig(AFIOD, GPIO_Pin_6, AFIO_AF_0,ENABLE); //PD6 RX0
}

/*******************************************************************************
*Function: UART_Mode_Config
*Description: 配置UART
*Input: 無(wú)
*Return: 無(wú)
*Others:
該函數(shù)負(fù)責(zé)初始化UART模塊的工作及其工作方式
*******************************************************************************/
void UART_Mode_Config(void)
{
UART_InitTypeDef UART_InitStruct;

/*初始化UART0*/
UART_InitStruct.UART_BaudRate = 9600;
UART_InitStruct.UART_WordLengthAndParity=UART_WordLengthAndParity_8D;
UART_InitStruct.UART_StopBitLength=UART_StopBitLength_1;
UART_InitStruct.UART_ParityMode=UART_ParityMode_Even;
UART_InitStruct.UART_Receiver=UART_Receiver_Enable;
UART_InitStruct.UART_LoopbackMode=UART_LoopbackMode_Disable;

UART_Init(UART0, &UART_InitStruct);

/*開(kāi)啟UART0的收發(fā)功能*/
UART_Cmd(UART0, ENABLE);
}

static void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;


/* 配置USART為中斷源 */
NVIC_InitStructure.NVIC_IRQChannel = UART0_IRQn;
/* 優(yōu)先級(jí)*/
NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
/* 使能中斷 */
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
/* 初始化配置NVIC */
NVIC_Init(&NVIC_InitStructure);

UART_ITConfig(UART0, UART_IT_RXNEI, ENABLE); // 使能串口接收中斷
//---------------------------------
// 使能串口
UART_Cmd(UART0, ENABLE);
}

/*******************************************************************************
*Function: UART_Driver
*Description: UART模塊驅(qū)動(dòng)函數(shù)
*Input: 無(wú)
*Return: 無(wú)
*Others:
*******************************************************************************/
void UART_Driver(void)
{
UART_GPIO_Config();
UART_Mode_Config();
//
NVIC_Configuration() ;//串口接受
}

void I2C_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定義一個(gè)GPIO_InitTypeDef類(lèi)型的結(jié)構(gòu)體
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; //選擇要控制的GPIO引腳
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OutPP; //設(shè)置引腳模式為通用推挽輸出
GPIO_InitStructure.GPIO_Pull = GPIO_Pull_Up; //無(wú)偏置
GPIO_Init(GPIOC, &GPIO_InitStructure); //調(diào)用庫(kù)函數(shù),初始化GPIO

// /* 配置I2C管腳的復(fù)用功能 */
// GPIO_DigitalRemapConfig(AFIOB, GPIO_Pin_5, AFIO_AF_0,ENABLE); //PB5 I2C SDA
// GPIO_DigitalRemapConfig(AFIOB, GPIO_Pin_4, AFIO_AF_0,ENABLE); //PB4 I2C SCL
}
void I2C_Driver(void)
{
I2C_InitTypeDef I2C_InitStruct;
I2C_InitStruct.I2C_Acknowledge = I2C_Acknowledge_Disable;
I2C_InitStruct.I2C_Broadcast = I2C_Broadcast_Disable;
I2C_InitStruct.I2C_OwnAddress = 0x00;
I2C_InitStruct.I2C_Prescaler = 640-1;
I2C_Init(I2C,&I2C_InitStruct);
}


int main (void)
{
uint32_t time = 0 ;
uint16_t i=0;

UART_Driver();
I2C_GPIO_Config();
// I2C_Driver();

printf("start......rn");
adxl_i2c_write(0x31, 0x0B) ; //Software_Delay(100000) ;
adxl_i2c_write(0x2c, 0x08) ; //Software_Delay(100000) ;
adxl_i2c_write(0x2d, 0x08) ; //Software_Delay(100000) ;
adxl_i2c_write(0x2e, 0x80) ; //Software_Delay(100000) ;
adxl_i2c_write(0x1E, 0x00) ; //Software_Delay(100000) ;
adxl_i2c_write(0x1F, 0x00) ; //Software_Delay(100000) ;
adxl_i2c_write(0x20, 0x05) ; //Software_Delay(100000) ;

//////// I2C_EE_Write(0xc0, 0x38, 1);Software_Delay(100000) ;
printf("device id=0x%xn", adxl_i2c_read(0x00)) ;


//I2C_EE_Read(arry_read, 0x20, DEVICE_ADDR, 1);
sc7a20_filter_init() ; //初始化濾波
while(1)
{
time++;

if(time%5000==0)
{
ADXL345_ReadDates(&anglex, &angley, &anglez) ;
printf("x=%.2f y=%.2f z=%.2fn", anglex, angley , anglez) ;
}

// Software_Delay(100000) ;
}

}

#include "filter.h"
#include "math.h"
#include "string.h"
#include "stdlib.h"

extern short x ;
extern short y ;
extern short z ;

typedef struct FilterChannelTag{
int16_t sample_l;
int16_t sample_h;

int16_t flag_l;
int16_t flag_h;

} FilterChannel;

typedef struct Silan_core_channel_s{
int16_t filter_param_l;
int16_t filter_param_h;
int16_t filter_threhold;
FilterChannel sl_channel[3];
} Silan_core_channel;

Silan_core_channel core_channel;

void sc7a20_filter_init(void)
{
int16_t j = 0;

core_channel.filter_param_l = 4;
core_channel.filter_param_h = 16;
core_channel.filter_threhold = 50; //4G scale: 25; 2G scale: 50

for(j = 0; j < 3; j++)
{
core_channel.sl_channel[j].sample_l = 0;
core_channel.sl_channel[j].sample_h = 0;
core_channel.sl_channel[j].flag_l = 0;
core_channel.sl_channel[j].flag_h = 0;
}

}


static int16_t filter_average(int16_t preAve, int16_t sample, int16_t Filter_num, int16_t * flag)
{
if (*flag == 0)
{
preAve = sample;
*flag = 1;
}

return preAve + (sample - preAve) / Filter_num;
}

static int16_t silan_filter_process(FilterChannel* fac, int16_t sample)
{
if(fac == NULL)
{
return 0;
}

fac->sample_l = filter_average(fac->sample_l, sample, core_channel.filter_param_l, &fac->flag_l);
fac->sample_h = filter_average(fac->sample_h, sample, core_channel.filter_param_h, &fac->flag_h);
if (abs(fac->sample_l - fac->sample_h) > core_channel.filter_threhold)
{
fac->sample_h = fac->sample_l;
}

return fac->sample_h;
}

void filter_base_dates(void)
{
x = silan_filter_process(&core_channel.sl_channel[0], x);
y = silan_filter_process(&core_channel.sl_channel[1], y);
z = silan_filter_process(&core_channel.sl_channel[2], z);
}

wKgaomZiamiAYCJyAAQMvBfGYJw069.png


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通訊
    +關(guān)注

    關(guān)注

    9

    文章

    912

    瀏覽量

    35084
  • IIC
    IIC
    +關(guān)注

    關(guān)注

    11

    文章

    302

    瀏覽量

    38504
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2946

    瀏覽量

    66960
  • ADXL345
    +關(guān)注

    關(guān)注

    14

    文章

    73

    瀏覽量

    34030
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于STM32F103C8T6 ADXL345 加速度傳感器的計(jì)步器設(shè)計(jì)指南和代碼

    基于 STM32F103C8T6 微控制器和 ADXL345 加速度傳感器的計(jì)步器設(shè)計(jì)相關(guān)內(nèi)容,包括 ADXL345 傳感器的工作原理、初始化與數(shù)據(jù)讀寫(xiě)操作,以及基于該傳感器的計(jì)步器算法實(shí)現(xiàn)
    的頭像 發(fā)表于 01-17 17:38 ?435次閱讀

    基于STM32設(shè)計(jì)的姿態(tài)感應(yīng)剎車(chē)燈

    本項(xiàng)目為自行車(chē)騎行者提供一種智能化的安全提示系統(tǒng),采用ADXL345陀螺儀、STM32F103C8T6主控芯片及四枚LED燈,通過(guò)實(shí)時(shí)監(jiān)測(cè)自行車(chē)的加速度變化,實(shí)現(xiàn)自動(dòng)剎車(chē)燈功能。
    的頭像 發(fā)表于 01-09 11:29 ?142次閱讀
    基于STM32設(shè)計(jì)的姿態(tài)感應(yīng)剎車(chē)燈

    ADXL345超低功耗3軸加速度計(jì)中文手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《ADXL345超低功耗3軸加速度計(jì)中文手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 01-06 16:35 ?1次下載

    ADXL345 3 軸數(shù)字加速計(jì): 小型、薄片式、低功耗移動(dòng)設(shè)備應(yīng)用的理想選擇

    具有 13 位分辨率的 ADXL345 3 軸數(shù)字加速計(jì) Analog Devices 的小型、薄片式、低功耗 ADXL345 加速計(jì)是移動(dòng)設(shè)備應(yīng)用的理想選擇 *附件:ADXL345_中文數(shù)據(jù)手冊(cè)
    的頭像 發(fā)表于 12-24 09:33 ?379次閱讀
    <b class='flag-5'>ADXL345</b> 3 軸數(shù)字加速計(jì): 小型、薄片式、低功耗移動(dòng)設(shè)備應(yīng)用的理想選擇

    Gmapping源代碼

    Gmapping源代碼.docx
    發(fā)表于 11-16 13:42 ?0次下載

    hex可以轉(zhuǎn)成源代碼

    Hex文件可以轉(zhuǎn)換成源代碼的近似形式,但無(wú)法直接還原為原始的、完全相同的源代碼 。這是因?yàn)镠ex文件是二進(jìn)制文件,包含了程序編譯后的機(jī)器碼,這些機(jī)器碼與原始的源代碼在結(jié)構(gòu)和表達(dá)上存在顯著的差異。不過(guò)
    的頭像 發(fā)表于 09-02 10:41 ?1207次閱讀

    adxl345動(dòng)態(tài)測(cè)值問(wèn)題

    目前在靜態(tài)情況下測(cè)得重力加速度是沒(méi)有問(wèn)題的,但校準(zhǔn)之后放在測(cè)振儀上分別以1m/s2和10m/s2進(jìn)行測(cè)試,測(cè)出來(lái)的結(jié)果分別為0.4m/s2和4m/s2左右。這是什么原因? 目前在測(cè)振儀上的數(shù)值就是穩(wěn)定不下來(lái),視頻中在1m/s2的情況下測(cè)試,一方面是數(shù)值不對(duì),另一方面是數(shù)值穩(wěn)定不了。
    發(fā)表于 07-23 15:09

    iic通訊的ardunio的文件下載

    里面很多iic通訊的ardunio的文件
    發(fā)表于 07-05 10:55 ?1次下載

    使用SPI總線(xiàn)將ADXL345與PSoC64集成,無(wú)法工作怎么解決?

    你好,我正在嘗試使用 SPI 總線(xiàn)將 ADXL345 與 PSoC64 集成。 為此,我使用了 HAL API。 我的目標(biāo)相對(duì)簡(jiǎn)單,只是試圖讀取 DEVICE ID 寄存器的數(shù)據(jù)。 因此,首先要配置
    發(fā)表于 07-05 06:39

    PT32L007F8P7K&amp; QMA6100P IIC 通訊源代碼分享

    "qma6100p.h" #include "PT32x007x.h" #include "string.h" #define MT6701_ADDR ? ? ? ? ? ? ? (0x0C
    的頭像 發(fā)表于 06-07 09:53 ?996次閱讀
    <b class='flag-5'>PT32L007</b>F8P7K&amp; QMA6100P <b class='flag-5'>IIC</b> <b class='flag-5'>通訊</b><b class='flag-5'>源代碼</b>分享

    ADXL345讀取id失敗的原因?

    我使用mcu讀取ADXL345 ID大部分時(shí)候可以正常讀取到0XE5,有些時(shí)候只能讀到00,下面附上示波器波形圖: 正常波形: 異常波形: 感覺(jué)貌似從4線(xiàn)spi 跑到了3線(xiàn),但是默認(rèn)情況
    發(fā)表于 05-27 07:23

    ADXL345讀取id失敗的原因?

    我使用mcu讀取ADXL345 ID大部分時(shí)候可以正常讀取到0XE5,有些時(shí)候只能讀到00,下面附上示波器波形圖: 正常波形: 異常波形: 感覺(jué)貌似從4線(xiàn)spi 跑到了3線(xiàn),但是默認(rèn)情況
    發(fā)表于 05-22 08:18

    STM32L0用IIC與G-senser(lis3dh)通訊時(shí),比較小的概率下會(huì)出現(xiàn)仲裁丟失,為什么?

    在我的STM32L0用IIC與G-senser(lis3dh)通訊時(shí),正常情況下能通訊,并且讀的數(shù)據(jù)都非常正常,但比較小的概率下會(huì)出現(xiàn)仲裁丟失,造成讀取G-senser寄存器數(shù)據(jù)錯(cuò)誤,
    發(fā)表于 05-13 07:19

    【開(kāi)源鴻蒙】下載OpenHarmony 4.1 Release源代碼

    本文介紹了如何下載開(kāi)源鴻蒙(OpenHarmony)操作系統(tǒng) 4.1 Release版本的源代碼,該方法同樣可以用于下載OpenHarmony最新開(kāi)發(fā)版本(master分支)或者4.0 Release、3.2 Release等發(fā)布版本的源代碼
    的頭像 發(fā)表于 04-27 23:16 ?1057次閱讀
    【開(kāi)源鴻蒙】下載OpenHarmony 4.1 Release<b class='flag-5'>源代碼</b>

    lis3dh使用IIC通訊,CS引腳懸空也能正常IIC通信嗎?

    芯片手冊(cè)上CS引腳接高電平是IIC通訊,接低電平是SPI通訊;接手的項(xiàng)目中,CS引腳是懸空的,IIC通訊能進(jìn)行,我想知道懸空能
    發(fā)表于 03-28 09:44
    主站蜘蛛池模板: 婷婷丁香亚洲 | 亚洲男同tv | jizz 大全欧美 | 最近2018年中文字幕大全一 | 人人做人人爽国产视 | 国内精品久久久久影院薰衣草 | 天堂69亚洲精品中文字幕 | 国产亚洲欧洲人人网 | 最新国产你懂的在线网址 | 欧美一区二区三区影院 | 影院在线观看免费 | 中文久草| 国产精品黄网站免费进入 | 亚洲国产精品综合久久久 | 高清国产一区二区三区 | 国产激情视频一区二区三区 | 91啦视频在线 | 久久一级毛片 | 国产美女流出白浆在线观看 | 美女扒开尿口给男人桶视频免费 | 亚洲日本视频 | 四虎影视4hu4虎成人 | 岛国毛片在线观看 | 免费看片你懂的 | 性视频在线| 最色网在线观看 | 国产欧美日韩视频免费61794 | 狠狠做深爱婷婷久久一区 | 精品一区二区在线观看 | 国产三级中文字幕 | 人人看人人看人做人人模 | 亚洲人成电影院在线观看 | 三级视频网站 | 色多多在线观看播放 | 亚洲精品你懂的 | 天天躁夜夜躁狠狠躁2021 | 手机看片日韩福利 | 特黄黄三级视频在线观看 | 国产精品一久久香蕉产线看 | 免费观看在线观看 | 日韩在线影院 |