国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(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類型的結(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

    文章

    945

    瀏覽量

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

    關(guān)注

    11

    文章

    309

    瀏覽量

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

    關(guān)注

    96

    文章

    2953

    瀏覽量

    70304
  • ADXL345
    +關(guān)注

    關(guān)注

    14

    文章

    73

    瀏覽量

    35391
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    PT32L005&amp;F005系列32位微控制器

    PT32L005&F005系列32位微控制器PT32L005&F005是澎湃微電子(PAI-IC) 推出的兩款 32 位微控制器,兩款芯片均基于 ARM
    發(fā)表于 03-05 08:51

    變頻器通訊代碼地址的含義

    變頻器作為工業(yè)自動(dòng)化領(lǐng)域的核心設(shè)備,其通訊功能是實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和系統(tǒng)集成的關(guān)鍵技術(shù)。通訊代碼地址作為變頻器與上位機(jī)(如PLC、HMI或計(jì)算機(jī))進(jìn)行數(shù)據(jù)交互的"語(yǔ)言密碼",其含義理解直接影響設(shè)備調(diào)試效率
    的頭像 發(fā)表于 12-11 07:37 ?904次閱讀
    變頻器<b class='flag-5'>通訊</b><b class='flag-5'>代碼</b>地址的含義

    【瑞薩RA6E2】硬件IIC驅(qū)動(dòng)九軸傳感器與OLED顯示

    一、項(xiàng)目概述 1.1 項(xiàng)目簡(jiǎn)介 本次試用基于瑞薩RA6E2開(kāi)發(fā)板,通過(guò)硬件IIC協(xié)議驅(qū)動(dòng)GY-85九軸傳感器模塊(包含ITG3205陀螺儀、ADXL345加速度計(jì)和QMC5883P磁力計(jì)),并在
    發(fā)表于 11-27 02:18

    PT32L007x系列微控制器

    PT32L007x系列微控制器是廈門(mén)澎湃微電子有限公司推出的基于ARM Cortex-M0內(nèi)核的32位超低功耗高性能MCU。PT32L007x系列MCU以“超低功耗 + 高集成度 + 寬壓供電”為
    發(fā)表于 11-19 09:21

    ADXL357的替代選擇

    數(shù)字輸出的ADXL357均為低噪聲密度、低0g失調(diào)漂移、低功耗、3軸加速度計(jì),具有可選測(cè)量范圍。低失調(diào)、低噪聲和低功耗ADXL357可在高振動(dòng)環(huán)境下實(shí)現(xiàn)精確的傾斜測(cè)量。ADXL356在更高頻率范圍內(nèi)
    的頭像 發(fā)表于 09-03 12:04 ?1203次閱讀
    <b class='flag-5'>ADXL</b>357的替代選擇

    Nuvoton_8051_ISP-ICP_Programmer_v7.15中缺少ISP加載器的源代碼怎么解決?

    : isp_code_n76e885_v4.10_comport.bin isp_code_n76e616_v4.10_comport.bin 是否有指向這些引導(dǎo)加載程序的源代碼的鏈接? 以下內(nèi)容為
    發(fā)表于 08-18 06:30

    在linux系統(tǒng)中,通過(guò)I2C和CCG5通訊,有沒(méi)有和CCG5通過(guò)I2C進(jìn)行固件升級(jí)?狀態(tài)配置的有沒(méi)有可以參考的源代碼

    在linux系統(tǒng)中,通過(guò)I2C和CCG5通訊,有沒(méi)有和CCG5通過(guò)I2C進(jìn)行固件升級(jí),狀態(tài)配置的 有沒(méi)有可以參考的源代碼? 固件升級(jí)是在linux kernel里面實(shí)現(xiàn) 還是在用戶空間 通過(guò) 訪問(wèn) i2c設(shè)備 進(jìn)行通訊
    發(fā)表于 07-17 06:59

    Analog Devices Inc. EVAL-ADXL382評(píng)估板 - INACTIVE數(shù)據(jù)手冊(cè)

    Analog Devices EVAL-ADXL382評(píng)估板包括以下評(píng)估板:EVAL-ADXL382BB-1Z(ADXL382 SPI型號(hào)用分線板)、EVAL-ADXL
    的頭像 發(fā)表于 06-03 09:38 ?1113次閱讀
    Analog Devices Inc. EVAL-<b class='flag-5'>ADXL</b>382評(píng)估板 - INACTIVE數(shù)據(jù)手冊(cè)

    基于STM32藍(lán)牙控制小車系統(tǒng)設(shè)計(jì)(硬件+源代碼+論文)下載

    基于STM32藍(lán)牙控制小車系統(tǒng)設(shè)計(jì)(硬件+源代碼+論文)推薦下載!
    發(fā)表于 05-29 21:45

    使用FX3 SDK發(fā)布源代碼是否違反許可?

    使用 FX3 SDK 發(fā)布源代碼是否違反許可? CYPRESS?EZ-USB? FX3 SDK1.3licenselicense.txt ”4. 專有權(quán)利; 到“您同意對(duì)源代碼保密。” 那里寫(xiě)著一句話,所以我想問(wèn)一下以確定。
    發(fā)表于 05-08 06:54

    如何獲取用于開(kāi)發(fā)fx2的sdk和示例源代碼

    大家好 我正在使用 FX2 設(shè)備,以前也使用過(guò) FX3 設(shè)備。 使用 FX3 設(shè)備 SDK,當(dāng)我下載它時(shí),我在安裝文件夾中獲得了許多示例源代碼,但是它沒(méi)有 FX2 的示例源代碼,我如何獲取用于開(kāi)發(fā) fx2 的 sdk 和示例源代碼
    發(fā)表于 05-07 07:25

    adxl382的iic讀取數(shù)據(jù)正常,但是spi似乎完全沒(méi)有響應(yīng),怎么解決?

    adxl382的iic讀取數(shù)據(jù)正常,但是spi似乎完全沒(méi)有響應(yīng),連id都讀不到,邏輯分析儀上看協(xié)議也正確,請(qǐng)問(wèn)如何調(diào)試呢?
    發(fā)表于 04-29 08:08

    STM32電機(jī)驅(qū)動(dòng)控制方案(含原理圖和源代碼

    淘到一個(gè)STM32電機(jī)驅(qū)動(dòng)控制方案(含原理圖和源代碼),一起分享,歡迎交流
    發(fā)表于 03-17 19:43

    27個(gè)FPGA實(shí)例源代碼

    本資料收集匯總了27個(gè)FPGA實(shí)例源代碼,有需要的可以下載學(xué)習(xí)! 獲取完整文檔資料可下載附件哦!!!!如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~
    發(fā)表于 03-14 17:31

    為什么無(wú)法從源代碼推斷OpenVINO?構(gòu)建中的VPU?

    為什么無(wú)法從源代碼推斷OpenVINO?構(gòu)建中的 VPU
    發(fā)表于 03-06 07:12