1 | /*
|
---|
2 | Description:
|
---|
3 | This is a example code for Sandbox Electronics' I2C/SPI to UART bridge module.
|
---|
4 | You can get one of those products on
|
---|
5 | http://sandboxelectronics.com
|
---|
6 |
|
---|
7 | Version:
|
---|
8 | V0.1
|
---|
9 |
|
---|
10 | Release Date:
|
---|
11 | 2014-02-16
|
---|
12 |
|
---|
13 | Author:
|
---|
14 | Tiequan Shao info@sandboxelectronics.com
|
---|
15 |
|
---|
16 | Lisence:
|
---|
17 | CC BY-NC-SA 3.0
|
---|
18 |
|
---|
19 | Please 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 |
|
---|
108 | class 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
|
---|