This commit is contained in:
cfif 2025-06-02 13:26:40 +03:00
commit 3c3e55cb0a
3 changed files with 119 additions and 0 deletions

77
I2cPorts.c Normal file
View File

@ -0,0 +1,77 @@
//
// Created by ilya on 25.03.24.
//
#include <GpioPin.h>
#include "I2cPorts.h"
tI2cPorts I2C_PORTS;
void vI2cPorts_InitI2c3(tI2cPortArtery *env) {
gpio_init_type GPIO_InitStruct;
/* i2c periph clock enable */
crm_periph_clock_enable(CRM_I2C3_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable( CRM_GPIOC_PERIPH_CLOCK, TRUE);
/* gpio configuration */
GPIO_InitStruct.gpio_out_type = GPIO_OUTPUT_OPEN_DRAIN;
GPIO_InitStruct.gpio_pull = GPIO_PULL_NONE;
GPIO_InitStruct.gpio_mode = GPIO_MODE_MUX;
GPIO_InitStruct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE;
/* configure i2c pins: scl */
GPIO_InitStruct.gpio_pins = GPIO_PINS_0;
gpio_init(GPIOC,&GPIO_InitStruct);
gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE0, GPIO_MUX_4);
/* configure i2c pins: sda */
GPIO_InitStruct.gpio_pins = GPIO_PINS_1;
gpio_init(GPIOC,&GPIO_InitStruct);
gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE1, GPIO_MUX_4);
I2cPortArtery_Init7bit(env,I2C3,I2C_SPEED_1KHz);
}
void vI2cPorts_InitI2c2(tI2cPortArtery *env) {
gpio_init_type GPIO_InitStruct;
/* i2c periph clock enable */
crm_periph_clock_enable(CRM_I2C2_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable( CRM_GPIOA_PERIPH_CLOCK, TRUE);
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE1, GPIO_MUX_4);
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE0, GPIO_MUX_4);
/* gpio configuration */
GPIO_InitStruct.gpio_out_type = GPIO_OUTPUT_OPEN_DRAIN;
GPIO_InitStruct.gpio_pull = GPIO_PULL_NONE;
GPIO_InitStruct.gpio_mode = GPIO_MODE_MUX;
GPIO_InitStruct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_MODERATE;
/* configure i2c pins: scl */
GPIO_InitStruct.gpio_pins = GPIO_PINS_0;
gpio_init(GPIOA,&GPIO_InitStruct);
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE0, GPIO_MUX_4);
/* configure i2c pins: sda */
GPIO_InitStruct.gpio_pins = GPIO_PINS_1;
gpio_init(GPIOA,&GPIO_InitStruct);
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE1, GPIO_MUX_4);
I2cPortArtery_Init7bit(env,I2C2,0x80504C4E);
}
void I2cPorts_Init() {
vI2cPorts_InitI2c3(&I2C_PORTS.codecI2c3);
I2C_PORTS.codecI2c3_IO = I2cPortArtery_GetIO(&I2C_PORTS.codecI2c3);
vI2cPorts_InitI2c2(&I2C_PORTS.amplI2c2);
I2C_PORTS.amplI2c2_IO = I2cPortArtery_GetIO(&I2C_PORTS.amplI2c2);
}

25
I2cPorts.h Normal file
View File

@ -0,0 +1,25 @@
//
// Created by ilya on 25.03.24.
//
#ifndef SMART_COMPONENTS_I2CPORTS_H
#define SMART_COMPONENTS_I2CPORTS_H
#include "I2cPortArtery.h"
#include "I2cIO.h"
#define I2C_SPEED_10KHz 0x8170F7F7
#define I2C_SPEED_1KHz 0x4F20FFFF
typedef struct {
tI2cPortArtery codecI2c3;
tI2cIO codecI2c3_IO;
tI2cPortArtery amplI2c2;
tI2cIO amplI2c2_IO;
} tI2cPorts;
void I2cPorts_Init();
extern tI2cPorts I2C_PORTS;
#endif //SMART_COMPONENTS_I2CPORTS_H

17
modular.json Normal file
View File

@ -0,0 +1,17 @@
{
"dep": [
{
"type": "git",
"provider": "Smart_Components_Aurus",
"repo": "I2cPort_ARTERY_At32f435_437_v2"
}
],
"cmake": {
"inc_dirs": [
"./"
],
"srcs": [
"./**.c"
]
}
}