Sapphire SoC DS Sapphire SoC UG Sapphire HP SoC DS Sapphire HP SoC UG RISC-V Embedded IDE UG Board Support Package
Loading...
Searching...
No Matches
cam.c
Go to the documentation of this file.
1
2// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
3// Full license header bsp/efinix/EfxSapphireSocRV64/include/LICENSE.MD
5
15
16#include "cam/cam.h"
17#include "debug.h"
18
19void cam_writeReg(cam_instance_t *cam, u16 reg, u8 data)
20{
21 i2c_instance_t *inst = cam->inst;
22
24
25 i2c_txByte(inst, cam->inst->slaveAddress);
27 BSP_ASSERT(i2c_rxAck(inst),"Failed to Assert!\n"); // Optional check
28
29 i2c_txByte(inst, (reg>>8) & 0xFF);
31 BSP_ASSERT(i2c_rxAck(inst),"Failed to Assert!\n"); // Optional check
32
33 i2c_txByte(inst, (reg) & 0xFF);
35 BSP_ASSERT(i2c_rxAck(inst),"Failed to Assert!\n"); // Optional check
36
37 i2c_txByte(inst, data & 0xFF);
39 BSP_ASSERT(i2c_rxAck(inst),"Failed to Assert!\n"); // Optional check
40
42}
43
45{
46 i2c_instance_t *inst = cam->inst;
47 u8 outdata;
48
50
51 i2c_txByte(inst, cam->inst->slaveAddress);
53 BSP_ASSERT(i2c_rxAck(inst),"Failed to Assert!\n"); // Optional check
54
55 i2c_txByte(inst, (reg>>8) & 0xFF);
57 BSP_ASSERT(i2c_rxAck(inst),"Failed to Assert!\n"); // Optional check
58
59 i2c_txByte(inst, (reg) & 0xFF);
61 BSP_ASSERT(i2c_rxAck(inst),"Failed to Assert!\n"); // Optional check
62
65
66 i2c_txByte(inst, (0x1A<<1) | 0x01);
68 BSP_ASSERT(i2c_rxAck(inst),"Failed to Assert!\n"); // Optional check
69
70 i2c_txByte(inst, 0xFF);
72 BSP_ASSERT(i2c_rxNack(inst),"Failed to Assert!\n"); // Optional check
73 outdata = i2c_rxData(inst);
74
76
77 return outdata;
78}
CAM driver API definitions.
DEBUG driver API definitions.
void cam_writeReg(cam_instance_t *cam, u16 reg, u8 data)
Write Data to specific register in camera.
Definition cam.c:19
u8 cam_readReg(cam_instance_t *cam, u16 reg)
Read Data from specific register in camera.
Definition cam.c:44
struct cam_instance cam_instance_t
Forward declaration of CAM instance.
Definition cam.h:107
#define BSP_ASSERT(cond, msg)
Definition debug.h:236
void i2c_startMasterBlocking(i2c_instance_t *inst)
Initiate start condition for I2C master mode and waits until the operation is complete.
Definition i2c.c:89
void i2c_txByte(i2c_instance_t *inst, u8 byte)
Transmits a byte of data over I2C.
Definition i2c.c:132
u32 i2c_rxNack(i2c_instance_t *inst)
Checks if the received ACK signal is detected.
Definition i2c.c:174
u32 i2c_rxAck(i2c_instance_t *inst)
Reads data from I2C receive data register.
Definition i2c.c:179
void i2c_txNackBlocking(i2c_instance_t *inst)
Sends an NACK signal over the I2C bus and waits until the transmission is complete.
Definition i2c.c:163
u32 i2c_rxData(i2c_instance_t *inst)
Reads data from I2C receive data register.
Definition i2c.c:169
void i2c_stopMasterBlocking(i2c_instance_t *inst)
Initiate stop condition for I2C master mode and waits until the operation is complete.
Definition i2c.c:105
i2c_instance_t * inst
Pointer to I2C instance *‍/.
Definition cam.h:128
I2C instance. Holds the software registers and hardware pointer.
Definition i2c.h:259
u32 slaveAddress
7-bit Slave Address *‍/
Definition i2c.h:261
uint8_t u8
Definition type.h:26
uint16_t u16
Definition type.h:24