You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

76 lines
2.1 KiB

#ifndef OWI_H
#define OWI_H
#include "r_cg_macrodriver.h"
#include "r_cg_serial.h"
#include "r_cg_port.h"
#include <stdint.h>
#define OWI_PORT_P P7
#define OWI_PORT_PM PM7
#define OWI_PORT_PU PU7
#define OWI_PORT_POM POM7
#define OWI_PIN_MASK (1u << 0)
/* 먼저 1200us로 고정해서 테스트 */
#define OWI_BIT_PERIOD_US 1200u
#define TBIT OWI_BIT_PERIOD_US
#define TLOW_0 ((TBIT * 3u) / 4u)
#define TLOW_1 ((TBIT * 1u) / 4u)
#define TSTOP_LOW (TBIT * 2u)
#define TIDLE (TBIT * 3u)
#define TSTART_HOLD 50u
#define SECURE_HIGH (2u * TBIT)
#define SECURE_TOGGLE_COUNT 3u
#define SECURE_TOGGLE_LOW (TBIT / 4u)
#define SECURE_TOGGLE_HIGH (TBIT / 5u)
#ifndef RAM_BYTES
#define RAM_BYTES 3
#endif
#define OWI_IO_MAX_BYTES 320u
typedef struct {
uint8_t ok;
uint8_t timeout;
uint16_t read_len;
uint8_t data[OWI_IO_MAX_BYTES];
uint16_t timeout_byte_index;
uint8_t timeout_bit_index;
} owi_io_result_t;
void GPIO_Clear(void);
void GPIO_Input(void);
int GPIO_Read(void);
void OWI_Init(uint32_t bit_time_us);
void OWI_Start(void);
void OWI_Stop(void);
void OWI_SecureStop(void);
void OWI_WriteBit(int bit);
void OWI_WriteByte(uint8_t data);
uint8_t OWI_ReadBit(void);
uint8_t OWI_ReadByte(void);
void OWI_T_ReadBytesAndPrint(int length);
void OWI_ReadBytesAndPrint(int length, uint8_t id);
void OWI_T_CommandMode(const uint8_t *tx_data, uint8_t tx_len, uint8_t id);
void OWI_CommandMode (const uint8_t *tx_data, uint8_t tx_len, uint8_t id);
void OWI_A_CommandMode(const uint8_t *tx_data, uint8_t tx_len, uint8_t id);
void OWI_T_CommandModeRaw(const uint8_t *tx_data, uint8_t tx_len, uint8_t id, owi_io_result_t *r);
void OWI_CommandModeRaw (const uint8_t *tx_data, uint8_t tx_len, uint8_t id, owi_io_result_t *r);
void OWI_ReadBytesRaw (int length, uint8_t id, owi_io_result_t *r);
void OWI_disable(void);
void GPIO_ForceHighKick(void);
uint8_t OWI_HasTimeout(void);
void OWI_ClearTimeout(void);
uint16_t OWI_GetLastTimeoutByteIndex(void);
uint8_t OWI_GetLastTimeoutBitIndex(void);
#endif