mirror of
https://github.com/mit-han-lab/tinyengine.git
synced 2025-05-11 09:51:23 +08:00
68 lines
2.0 KiB
C
68 lines
2.0 KiB
C
/* ----------------------------------------------------------------------
|
|
* Project: TinyEngine
|
|
* Title: camera_i2c.h
|
|
*
|
|
* Reference papers:
|
|
* - MCUNet: Tiny Deep Learning on IoT Device, NeurIPS 2020
|
|
* - MCUNetV2: Memory-Efficient Patch-based Inference for Tiny Deep Learning, NeurIPS 2021
|
|
* - MCUNetV3: On-Device Training Under 256KB Memory, NeurIPS 2022
|
|
* Contact authors:
|
|
* - Wei-Ming Chen, wmchen@mit.edu
|
|
* - Wei-Chen Wang, wweichen@mit.edu
|
|
* - Ji Lin, jilin@mit.edu
|
|
* - Ligeng Zhu, ligeng@mit.edu
|
|
* - Song Han, songhan@mit.edu
|
|
*
|
|
* Target ISA: ARMv7E-M
|
|
* -------------------------------------------------------------------- */
|
|
|
|
#ifndef CAMERA_I2C_H_
|
|
#define CAMERA_I2C_H_
|
|
|
|
#include "stm32746g_discovery.h"
|
|
#include "stm32f7xx_hal.h"
|
|
|
|
struct sensor_reg {
|
|
uint8_t reg;
|
|
uint8_t val;
|
|
};
|
|
|
|
const struct sensor_reg testRegs[] = {
|
|
{0xff, 0x0},
|
|
{0x2c, 0xff},
|
|
};
|
|
|
|
#define I2Cx I2C1
|
|
#define RCC_PERIPHCLK_I2Cx RCC_PERIPHCLK_I2C1
|
|
#define RCC_I2CxCLKSOURCE_SYSCLK RCC_I2C1CLKSOURCE_PCLK1
|
|
#define I2Cx_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
|
|
#define I2Cx_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
|
|
#define I2Cx_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
|
|
|
|
#define I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
|
|
#define I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
|
|
|
|
#define I2Cx_SCL_PIN GPIO_PIN_8
|
|
#define I2Cx_SCL_GPIO_PORT GPIOB
|
|
#define I2Cx_SDA_PIN GPIO_PIN_9
|
|
#define I2Cx_SDA_GPIO_PORT GPIOB
|
|
#define I2Cx_SCL_SDA_AF GPIO_AF4_I2C1
|
|
|
|
#define TXBUFFERSIZE (COUNTOF(aTxBuffer) - 1)
|
|
|
|
#define RXBUFFERSIZE TXBUFFERSIZE
|
|
|
|
#define COUNTOF(__BUFFER__) (sizeof(__BUFFER__) / sizeof(*(__BUFFER__)))
|
|
|
|
int camI2CSetup();
|
|
int camI2CErrorTest();
|
|
|
|
int wrSensorReg16_8(uint16_t regID, uint16_t regDat);
|
|
int wrSensorRegs16_8(const struct sensor_reg reglist[]);
|
|
int rdSensorReg16_8(uint16_t regID, uint8_t *regDat);
|
|
int wrSensorReg8_8(uint8_t regID, uint8_t regDat);
|
|
int wrSensorRegs8_8(const struct sensor_reg reglist[]);
|
|
int rdSensorReg8_8(uint8_t regID, uint8_t *regDat);
|
|
|
|
#endif
|