ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
fw_i2c.c
Go to the documentation of this file.
1// Copyright 2021 IOsetting <iosetting(at)outlook.com>
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#include "fw_i2c.h"
16
17
19{
20 SFRX_ON();
22 I2C_MasterSendData(devAddr & 0xFE);
24 I2C_MasterSendData(memAddr);
26 while(size--)
27 {
30 }
32 SFRX_OFF();
33 return HAL_OK;
34}
35
36uint8_t I2C_Read(uint8_t devAddr, uint8_t memAddr, uint8_t *buf, uint16_t size)
37{
38 SFRX_ON();
40 I2C_MasterSendData(devAddr & 0xFE);
42 I2C_MasterSendData(memAddr);
45 I2C_MasterSendData(devAddr | 0x01);
47 while(size--)
48 {
50 *buf++ = I2CRXD;
51 if (size == 0)
52 {
54 }
55 else
56 {
58 }
59 }
61 SFRX_OFF();
62 return HAL_OK;
63}
64
66{
67 SFRX_ON();
69 I2C_MasterSendData(devAddr & 0xFE);
71 I2C_MasterSendData(memAddr >> 8);
73 I2C_MasterSendData(memAddr & 0xFF);
75 while(size--)
76 {
79 }
81 SFRX_OFF();
82 return HAL_OK;
83}
84
86{
87 SFRX_ON();
89 I2C_MasterSendData(devAddr & 0xFE);
91 I2C_MasterSendData(memAddr >> 8);
93 I2C_MasterSendData(memAddr & 0xFF);
96 I2C_MasterSendData(devAddr | 0x01);
98 while(size--)
99 {
101 *buf++ = I2CRXD;
102 if (size == 0)
103 {
105 }
106 else
107 {
109 }
110 }
112 SFRX_OFF();
113 return HAL_OK;
114}
__CODE int8_t dat[20]
uint8_t I2C_Read(uint8_t devAddr, uint8_t memAddr, uint8_t *buf, uint16_t size)
Definition: fw_i2c.c:36
uint8_t I2C_Write16BitAddr(uint8_t devAddr, uint16_t memAddr, uint8_t *dat, uint16_t size)
Definition: fw_i2c.c:65
uint8_t I2C_Write(uint8_t devAddr, uint8_t memAddr, uint8_t *dat, uint16_t size)
Definition: fw_i2c.c:18
uint8_t I2C_Read16BitAddr(uint8_t devAddr, uint16_t memAddr, uint8_t *buf, uint16_t size)
Definition: fw_i2c.c:85
#define I2C_MasterSendData(__DATA__)
Definition: fw_i2c.h:84
#define I2C_MasterRxAck()
Definition: fw_i2c.h:85
#define I2C_SendMasterCmd(__CMD__)
Definition: fw_i2c.h:77
@ I2C_MasterCmd_Recv
Definition: fw_i2c.h:35
#define I2C_MasterStart()
Definition: fw_i2c.h:83
#define I2C_MasterAck()
Definition: fw_i2c.h:86
#define I2C_MasterNAck()
Definition: fw_i2c.h:87
#define I2C_MasterStop()
Definition: fw_i2c.h:88
#define I2CRXD
unsigned short uint16_t
Definition: fw_types.h:19
#define SFRX_ON()
Definition: fw_types.h:112
@ HAL_OK
Definition: fw_types.h:76
#define SFRX_OFF()
Definition: fw_types.h:113
unsigned char uint8_t
Definition: fw_types.h:18