Rev 360 | Rev 482 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 360 | Rev 470 | ||
---|---|---|---|
Line 54... | Line 54... | ||
54 | // + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
54 | // + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
55 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
55 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
56 | #include <string.h> |
56 | #include <string.h> |
57 | #include <stdio.h> |
57 | #include <stdio.h> |
58 | #include "91x_lib.h" |
58 | #include "91x_lib.h" |
59 | #include "i2c.h" |
59 | #include "i2c1.h" |
60 | #include "uart1.h" |
60 | #include "uart1.h" |
61 | #include "timer1.h" |
61 | #include "timer1.h" |
62 | #include "eeprom.h" |
62 | #include "eeprom.h" |
63 | #include "led.h" |
63 | #include "led.h" |
Line 99... | Line 99... | ||
99 | if(((u32)Address + (u32)DataLen) >= (EEPROM_SIZE - 1)) |
99 | if(((u32)Address + (u32)DataLen) >= (EEPROM_SIZE - 1)) |
100 | { |
100 | { |
101 | retval = EEPROM_ERROR_OUT_OF_ADDRESS_RANGE; |
101 | retval = EEPROM_ERROR_OUT_OF_ADDRESS_RANGE; |
102 | return(retval); |
102 | return(retval); |
103 | } |
103 | } |
104 | if((DataLen+2) > I2C_BUFFER_LEN) |
104 | if((DataLen+2) > I2C1_BUFFER_LEN) |
105 | { |
105 | { |
106 | retval = EEPROM_I2C_BUFFER_OVERRUN; |
106 | retval = EEPROM_I2C_BUFFER_OVERRUN; |
107 | return(retval); |
107 | return(retval); |
108 | } |
108 | } |
109 | do |
109 | do |
110 | { |
110 | { |
111 | if(!I2C_LockBuffer(I2C_IDLE_TIMEOUT)) return EEPROM_ERROR_I2C_IDLE_TIMEOUT; |
111 | if(!I2C1_LockBuffer(I2C_IDLE_TIMEOUT)) return EEPROM_ERROR_I2C_IDLE_TIMEOUT; |
112 | // buffer is now locked |
112 | // buffer is now locked |
113 | TxBytes = 0; |
113 | TxBytes = 0; |
114 | // transmitt address |
114 | // transmitt address |
115 | I2C_Buffer[TxBytes++] = (u8)(0x00FF & (Address>>8)); |
115 | I2C1_Buffer[TxBytes++] = (u8)(0x00FF & (Address>>8)); |
116 | I2C_Buffer[TxBytes++] = (u8)(0x00FF & Address); |
116 | I2C1_Buffer[TxBytes++] = (u8)(0x00FF & Address); |
117 | if(Direction == EEPROM_WRITE) |
117 | if(Direction == EEPROM_WRITE) |
118 | { // copy data to i2c transfer buffer |
118 | { // copy data to i2c transfer buffer |
119 | for(i = 0; i<DataLen;i++) |
119 | for(i = 0; i<DataLen;i++) |
120 | { |
120 | { |
121 | I2C_Buffer[TxBytes++] = pData[i]; |
121 | I2C1_Buffer[TxBytes++] = pData[i]; |
122 | } |
122 | } |
123 | // prepare pointer to rx data |
123 | // prepare pointer to rx data |
124 | EEPROM_pData = 0; |
124 | EEPROM_pData = 0; |
125 | EEPROM_DataLen = 0; |
125 | EEPROM_DataLen = 0; |
126 | // start transmission |
126 | // start transmission |
127 | if(!I2C_Transmission(EEPROM_I2C_ADDRESS, TxBytes, 0, 0)) |
127 | if(!I2C1_Transmission(EEPROM_I2C_ADDRESS, TxBytes, 0, 0)) |
128 | { |
128 | { |
129 | return(retval); |
129 | return(retval); |
130 | } |
130 | } |
131 | } |
131 | } |
132 | else // Direction == EEPROM_READ |
132 | else // Direction == EEPROM_READ |
133 | { |
133 | { |
134 | // prepare pointer to rx data |
134 | // prepare pointer to rx data |
135 | EEPROM_pData = pData; |
135 | EEPROM_pData = pData; |
136 | EEPROM_DataLen = DataLen; |
136 | EEPROM_DataLen = DataLen; |
137 | // start transmission |
137 | // start transmission |
138 | if(!I2C_Transmission(EEPROM_I2C_ADDRESS, TxBytes, &EEPROM_RxDataHandler, DataLen)) |
138 | if(!I2C1_Transmission(EEPROM_I2C_ADDRESS, TxBytes, &EEPROM_RxDataHandler, DataLen)) |
139 | { |
139 | { |
140 | return(retval); |
140 | return(retval); |
141 | } |
141 | } |
142 | } |
142 | } |
143 | //wait for end of this transfer |
143 | //wait for end of this transfer |
144 | if(I2C_WaitForEndOfTransmission(I2C_TRANSFER_TIMEOUT)) |
144 | if(I2C1_WaitForEndOfTransmission(I2C_TRANSFER_TIMEOUT)) |
145 | { |
145 | { |
146 | if(I2C_Error == I2C_ERROR_NONE) return(EEPROM_SUCCESS); |
146 | if(I2C1_Error == I2C_ERROR_NONE) return(EEPROM_SUCCESS); |
147 | else retval = EEPROM_DATA_TRANSFER_INCOMPLETE; |
147 | else retval = EEPROM_DATA_TRANSFER_INCOMPLETE; |
148 | } |
148 | } |
149 | else// i2c transfer timed out |
149 | else// i2c transfer timed out |
150 | { |
150 | { |
151 | return(EEPROM_ERROR_I2C_TRANSFER_TIMEOUT); |
151 | return(EEPROM_ERROR_I2C_TRANSFER_TIMEOUT); |
Line 188... | Line 188... | ||
188 | u16 AdrOffset = 0; |
188 | u16 AdrOffset = 0; |
189 | u16 RxLen; |
189 | u16 RxLen; |
Line 190... | Line 190... | ||
190 | 190 | ||
191 | while(DataLen > 0) |
191 | while(DataLen > 0) |
192 | { |
192 | { |
193 | if(DataLen > I2C_BUFFER_LEN) RxLen = I2C_BUFFER_LEN; |
193 | if(DataLen > I2C1_BUFFER_LEN) RxLen = I2C1_BUFFER_LEN; |
Line 194... | Line 194... | ||
194 | else RxLen = DataLen; |
194 | else RxLen = DataLen; |
195 | 195 | ||
196 | retval = EEPROM_Transfer(EEPROM_READ, Address+AdrOffset, &(pData[AdrOffset]), RxLen); |
196 | retval = EEPROM_Transfer(EEPROM_READ, Address+AdrOffset, &(pData[AdrOffset]), RxLen); |