| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #include "SysTick.h"
- #include "IM1253E.h"
- #include "common.h"
- #include "uart.h"
- #include "stdbool.h"
- #define UART1_BUF_SIZE 64
- uint8_t Tx_Data_frame_IM1253E[UART1_BUF_SIZE];
- extern bool B_Rx_Finish;
- extern uint8_t RX_Length;
- extern uint8_t Rx_Data_len;
- extern uint8_t u8_RX_Index;
- extern uint8_t u8_RxBuf[UART1_BUF_SIZE];
- uint16_t CRC_calculate_function(uint8_t len)
- {
- uint8_t i = 0;
- uint8_t j = 0;
- uint16_t temp0 = 0xffff;
- uint16_t temp1 = 0xffff;
- for(i = 0;i < len;i++)
- {
- temp0 = Tx_Data_frame_IM1253E[i] ^ temp0;
- temp1 = temp0 >> 1;
- for(j = 0;j < 8;j++)
- {
- if((temp0 & 0x0001) > 0)
- {
- temp0 = temp1 ^ 0xa001;
- }
- else
- {
- temp0 = temp1;
- }
- temp1 = temp0 >> 1;
- }
- }
- return temp0;
- }
- void Read_IM1253E_REG(uint8_t dev_addr,uint16_t reg_addr,uint8_t len)
- {
- uint16_t temp0;
- u8_RX_Index = 0;
- B_Rx_Finish = 0;
- RX_Length = len << 2;
- RX_Length = RX_Length + 5;
- Tx_Data_frame_IM1253E[0] = dev_addr;
- Tx_Data_frame_IM1253E[1] = cmd_read_IM1253E;
- Tx_Data_frame_IM1253E[2] = reg_addr >> 8;
- Tx_Data_frame_IM1253E[3] = reg_addr;
- Tx_Data_frame_IM1253E[4] = 0x00;
- Tx_Data_frame_IM1253E[5] = len;
- temp0 = CRC_calculate_function(6);
- Tx_Data_frame_IM1253E[6] = temp0;
- Tx_Data_frame_IM1253E[7] = temp0 >> 8;
- Start_Send_UartData(Tx_Data_frame_IM1253E,8);
- }
- void Write_IM1253E_REG(uint8_t dev_addr,uint16_t reg_addr,uint8_t *pt,uint8_t len)
- {
- uint8_t i;
- RX_Length = len + 6;
- Tx_Data_frame_IM1253E[0] = dev_addr;
- Tx_Data_frame_IM1253E[1] = cmd_read_IM1253E;
- Tx_Data_frame_IM1253E[2] = reg_addr >> 8;
- Tx_Data_frame_IM1253E[3] = reg_addr;
- Tx_Data_frame_IM1253E[4] = 0x00;
- Tx_Data_frame_IM1253E[5] = len;
- Tx_Data_frame_IM1253E[6] = len << 1;
- for(i = 0;i < len;i++)
- {
- Tx_Data_frame_IM1253E[7 + i] = *(pt + i);
- }
- Tx_Data_frame_IM1253E[7 + len] = CRC_calculate_function(7 + len);
- Tx_Data_frame_IM1253E[8 + len] = CRC_calculate_function(7 + len) >> 8;
- Start_Send_UartData(Tx_Data_frame_IM1253E,(9 + len));
- }
|