source: rtos_arduino/trunk/arduino_lib/libraries/Ciao/src/lib/SC16IS750.h@ 175

Last change on this file since 175 was 175, checked in by ertl-honda, 8 years ago

ライブラリを Arduino IDE 1.7.9 にupdate

File size: 5.3 KB
Line 
1/*
2Description:
3This is a example code for Sandbox Electronics' I2C/SPI to UART bridge module.
4You can get one of those products on
5http://sandboxelectronics.com
6
7Version:
8V0.1
9
10Release Date:
112014-02-16
12
13Author:
14Tiequan Shao info@sandboxelectronics.com
15
16Lisence:
17CC BY-NC-SA 3.0
18
19Please keep the above information when you use this code in your project.
20*/
21
22
23#ifndef _SC16IS750_H_
24#define _SC16IS750_H_
25
26#if ARDUINO >= 100
27 #include "Arduino.h"
28#else
29 #include "WProgram.h"
30#endif
31
32//Device Address
33
34//A:VDD
35//B:GND
36//C:SCL
37//D:SDA
38#define SC16IS750_ADDRESS_AA (0X90)
39#define SC16IS750_ADDRESS_AB (0X92)
40#define SC16IS750_ADDRESS_AC (0X94)
41#define SC16IS750_ADDRESS_AD (0X96)
42#define SC16IS750_ADDRESS_BA (0X98)
43#define SC16IS750_ADDRESS_BB (0X9A)
44#define SC16IS750_ADDRESS_BC (0X9C)
45#define SC16IS750_ADDRESS_BD (0X9E)
46#define SC16IS750_ADDRESS_CA (0XA0)
47#define SC16IS750_ADDRESS_CB (0XA2)
48#define SC16IS750_ADDRESS_CC (0XA4)
49#define SC16IS750_ADDRESS_CD (0XA6)
50#define SC16IS750_ADDRESS_DA (0XA8)
51#define SC16IS750_ADDRESS_DB (0XAA)
52#define SC16IS750_ADDRESS_DC (0XAC)
53#define SC16IS750_ADDRESS_DD (0XAE)
54
55
56//General Registers
57#define SC16IS750_REG_RHR (0x00)
58#define SC16IS750_REG_THR (0X00)
59#define SC16IS750_REG_IER (0X01)
60#define SC16IS750_REG_FCR (0X02)
61#define SC16IS750_REG_IIR (0X02)
62#define SC16IS750_REG_LCR (0X03)
63#define SC16IS750_REG_MCR (0X04)
64#define SC16IS750_REG_LSR (0X05)
65#define SC16IS750_REG_MSR (0X06)
66#define SC16IS750_REG_SPR (0X07)
67#define SC16IS750_REG_TCR (0X06)
68#define SC16IS750_REG_TLR (0X07)
69#define SC16IS750_REG_TXLVL (0X08)
70#define SC16IS750_REG_RXLVL (0X09)
71#define SC16IS750_REG_IODIR (0X0A)
72#define SC16IS750_REG_IOSTATE (0X0B)
73#define SC16IS750_REG_IOINTENA (0X0C)
74#define SC16IS750_REG_IOCONTROL (0X0E)
75#define SC16IS750_REG_EFCR (0X0F)
76
77//Special Registers
78#define SC16IS750_REG_DLL (0x00)
79#define SC16IS750_REG_DLH (0X01)
80
81//Enhanced Registers
82#define SC16IS750_REG_EFR (0X02)
83#define SC16IS750_REG_XON1 (0X04)
84#define SC16IS750_REG_XON2 (0X05)
85#define SC16IS750_REG_XOFF1 (0X06)
86#define SC16IS750_REG_XOFF2 (0X07)
87
88//
89#define SC16IS750_INT_CTS (0X80)
90#define SC16IS750_INT_RTS (0X40)
91#define SC16IS750_INT_XOFF (0X20)
92#define SC16IS750_INT_SLEEP (0X10)
93#define SC16IS750_INT_MODEM (0X08)
94#define SC16IS750_INT_LINE (0X04)
95#define SC16IS750_INT_THR (0X02)
96#define SC16IS750_INT_RHR (0X01)
97
98//Application Related
99
100#define SC16IS750_CRYSTCAL_FREQ (14745600UL)
101//#define SC16IS750_CRYSTCAL_FREQ (1843200UL)
102//#define SC16IS750_CRYSTCAL_FREQ (16000000UL)
103//#define SC16IS750_DEBUG_PRINT (0)
104#define SC16IS750_PROTOCOL_I2C (0)
105#define SC16IS750_PROTOCOL_I2C (0)
106#define END "<!--~-->"
107
108class WifiData : public Stream
109{
110 public:
111 WifiData(uint8_t prtcl = SC16IS750_PROTOCOL_I2C, uint8_t addr = SC16IS750_ADDRESS_AD);
112 void begin(uint32_t baud);
113 int read();
114 size_t write(uint8_t val);
115 int available();
116 void pinMode(uint8_t pin, uint8_t io);
117 void digitalWrite(uint8_t pin, uint8_t value);
118 uint8_t digitalRead(uint8_t pin);
119 uint8_t ping();
120 int peek();
121 void flush();
122 uint8_t GPIOGetPortState(void);
123 uint8_t InterruptPendingTest(void);
124 void SetPinInterrupt(uint8_t io_int_ena);
125 void InterruptControl(uint8_t int_ena);
126 void ModemPin(uint8_t gpio); //gpio == 0, gpio[7:4] are modem pins, gpio == 1 gpio[7:4] are gpios
127 void GPIOLatch(uint8_t latch);
128
129
130 private:
131 uint8_t device_address_sspin;
132 uint8_t protocol;
133 // uint32_t timeout;
134 int16_t SetBaudrate(uint32_t baudrate);
135 uint8_t ReadRegister(uint8_t reg_addr);
136 void WriteRegister(uint8_t reg_addr, uint8_t val);
137 void SetLine(uint8_t data_length, uint8_t parity_select, uint8_t stop_length );
138 void GPIOSetPinMode(uint8_t pin_number, uint8_t i_o);
139 void GPIOSetPinState(uint8_t pin_number, uint8_t pin_state);
140
141 uint8_t GPIOGetPinState(uint8_t pin_number);
142 void GPIOSetPortMode(uint8_t port_io);
143 void GPIOSetPortState(uint8_t port_state);
144 void ResetDevice(void);
145
146
147
148 void __isr(void);
149 void FIFOEnable(uint8_t fifo_enable);
150 void FIFOReset(uint8_t rx_fifo);
151 void FIFOSetTriggerLevel(uint8_t rx_fifo, uint8_t length);
152 uint8_t FIFOAvailableData(void);
153 uint8_t FIFOAvailableSpace(void);
154 void WriteByte(uint8_t val);
155 int ReadByte(void);
156 void EnableTransmit(uint8_t tx_enable);
157 // int16_t readwithtimeout();
158 int peek_buf;
159 uint8_t peek_flag;
160
161};
162
163#endif
Note: See TracBrowser for help on using the repository browser.