/* * PE43711.c * * Created on: 2019. 6. 28. * Author: parkyj */ #include "PE43711.h" #if 1 // PYJ.2019.07.26_BEGIN -- #define ATTEN_Initial_Val 0 extern void Pol_Delay_us(volatile uint32_t microseconds); void PE43711_ALL_atten_ctrl(ALL_PE43711_st ATT); void PE43711_atten_ctrl(PE43711_st ATT ,uint8_t data); ALL_PE43711_st ALL_ATT; volatile PE43711_st ATT_DL1 ={ ATT_CLOCK1_GPIO_Port, ATT_CLOCK1_Pin, ATT_DATA1_GPIO_Port, ATT_DATA1_Pin, ATT_EN_DL1_GPIO_Port, ATT_EN_DL1_Pin, }; volatile PE43711_st ATT_UL1 ={ ATT_CLOCK1_GPIO_Port, ATT_CLOCK1_Pin, ATT_DATA1_GPIO_Port, ATT_DATA1_Pin, ATT_EN_UL1_GPIO_Port, ATT_EN_UL1_Pin, }; volatile PE43711_st ATT_DL2 ={ ATT_CLOCK2_GPIO_Port, ATT_CLOCK2_Pin, ATT_DATA2_GPIO_Port, ATT_DATA2_Pin, ATT_EN_DL2_GPIO_Port, ATT_EN_DL2_Pin, }; volatile PE43711_st ATT_UL2 ={ ATT_CLOCK2_GPIO_Port, ATT_CLOCK2_Pin, ATT_DATA2_GPIO_Port, ATT_DATA2_Pin, ATT_EN_UL2_GPIO_Port, ATT_EN_UL2_Pin, }; volatile PE43711_st ATT_DL3 ={ ATT_CLOCK3_GPIO_Port, ATT_CLOCK3_Pin, ATT_DATA3_GPIO_Port, ATT_DATA3_Pin, ATT_EN_DL3_GPIO_Port, ATT_EN_DL3_Pin, }; volatile PE43711_st ATT_UL3 ={ ATT_CLOCK3_GPIO_Port, ATT_CLOCK3_Pin, ATT_DATA3_GPIO_Port, ATT_DATA3_Pin, ATT_EN_UL3_GPIO_Port, ATT_EN_UL3_Pin, }; volatile PE43711_st ATT_DL4 ={ ATT_CLOCK4_GPIO_Port, ATT_CLOCK4_Pin, ATT_DATA4_GPIO_Port, ATT_DATA4_Pin, ATT_EN_DL4_GPIO_Port, ATT_EN_DL4_Pin, }; volatile PE43711_st ATT_UL4 ={ ATT_CLOCK4_GPIO_Port, ATT_CLOCK4_Pin, ATT_DATA4_GPIO_Port, ATT_DATA4_Pin, ATT_EN_UL4_GPIO_Port, ATT_EN_UL4_Pin, }; void PE43711_PinInit(void){ ALL_ATT.ATT_DL1 = ATT_DL1; ALL_ATT.ATT_UL1 = ATT_UL1; ALL_ATT.ATT_DL2 = ATT_DL2; ALL_ATT.ATT_UL2 = ATT_UL2; ALL_ATT.ATT_DL3 = ATT_DL3; ALL_ATT.ATT_UL3 = ATT_UL3; ALL_ATT.ATT_DL4 = ATT_DL4; ALL_ATT.ATT_UL4 = ATT_UL4; ALL_ATT.data_DL1 = ATTEN_Initial_Val; ALL_ATT.data_UL1 = ATTEN_Initial_Val; ALL_ATT.data_DL2 = ATTEN_Initial_Val; ALL_ATT.data_UL2 = ATTEN_Initial_Val; ALL_ATT.data_DL3 = ATTEN_Initial_Val; ALL_ATT.data_UL3 = ATTEN_Initial_Val; ALL_ATT.data_DL4 = ATTEN_Initial_Val; ALL_ATT.data_UL4 = ATTEN_Initial_Val; // PE43711_ALL_atten_ctrl(ALL_ATT); } #endif // PYJ.2019.07.26_END -- void Bit_Compare(PE43711_st ATT,uint8_t data,uint8_t Shift_Index){ if(data & (0x01 << Shift_Index)){ HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_SET);//DATA } else{ HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_RESET);//DATA } } uint8_t PE43711_DataToHexConvert(double val){ double ref = 16; uint8_t ret = 0,shift = 0x40; // printf("val : %f \r\n",val); for(int i = 0; i < 8; i++){ if(val == 0) break; if(val < 31.25){ if(val >= ref){ val -= ref; ret |= shift; // printf("ret : %x \r\n",ret); } ref /= 2; } else{ ret = 0b01111111; break; } shift >>= 1; } // printf("\r\nPE43711_DataToHexConvert Result : %x\r\n",ret); return ret; } #if 0 // PYJ.2020.04.17_BEGIN -- void PE43711_ALL_atten_ctrl(ALL_PE43711_st ATT){ HAL_GPIO_WritePin(ATT.ATT_DL1.LE_PORT,ATT.ATT_DL1.LE_PIN,GPIO_PIN_RESET); Pol_Delay_us(10); // printf("why not? \r\n"); for(uint8_t i = 0; i < 8; i++){ Bit_Compare(ATT.ATT0,ATT.data0,i); Bit_Compare(ATT.ATT1,ATT.data1,i); Bit_Compare(ATT.ATT2,ATT.data2,i); Bit_Compare(ATT.ATT3,ATT.data3,i); Bit_Compare(ATT.ATT4,ATT.data4,i); Bit_Compare(ATT.ATT5,ATT.data5,i); HAL_GPIO_WritePin(ATT.ATT0.CLK_PORT,ATT.ATT0.CLK_PIN,GPIO_PIN_SET);//CLOCK Pol_Delay_us(10); HAL_GPIO_WritePin(ATT.ATT0.CLK_PORT,ATT.ATT0.CLK_PIN,GPIO_PIN_RESET);//CLOCK } HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);//DATA HAL_GPIO_WritePin(ATT.ATT0.LE_PORT,ATT.ATT0.LE_PIN,GPIO_PIN_SET);//LE Pol_Delay_us(10); HAL_GPIO_WritePin(ATT.ATT0.LE_PORT,ATT.ATT0.LE_PIN,GPIO_PIN_RESET); } #endif // PYJ.2020.04.17_END -- void PE43711_atten_ctrl(PE43711_st ATT ,uint8_t data){ uint8_t i = 0; uint8_t temp = 0; //data = 4 * data; // ATTEN ERROR 수정 temp = (uint8_t)data; HAL_GPIO_WritePin(ATT.LE_PORT,ATT.LE_PIN,GPIO_PIN_RESET); Pol_Delay_us(10); for(i = 0; i < 8; i++){ if((uint8_t)temp & 0x01){ HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_SET);//DATA } else{ HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_RESET);//DATA } HAL_GPIO_WritePin(ATT.CLK_PORT,ATT.CLK_PIN,GPIO_PIN_SET);//CLOCK Pol_Delay_us(10); HAL_GPIO_WritePin(ATT.CLK_PORT,ATT.CLK_PIN,GPIO_PIN_RESET);//CLOCK Pol_Delay_us(10); temp >>= 1; } HAL_GPIO_WritePin(ATT.CLK_PORT,ATT.CLK_PIN,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_RESET);//DATA Pol_Delay_us(10); HAL_GPIO_WritePin(ATT.LE_PORT,ATT.LE_PIN,GPIO_PIN_SET);//LE Pol_Delay_us(10); HAL_GPIO_WritePin(ATT.LE_PORT,ATT.LE_PIN,GPIO_PIN_RESET); } void PE43711_atten_ctrl2(PE43711_st* ATT ,uint8_t data){ uint8_t i = 0; uint8_t temp = 0; //data = 4 * data; // ATTEN ERROR 수정 temp = (uint8_t)data; HAL_GPIO_WritePin(ATT->LE_PORT,ATT->LE_PIN,GPIO_PIN_RESET); Pol_Delay_us(10); for(i = 0; i < 8; i++){ if((uint8_t)temp & 0x01){ HAL_GPIO_WritePin(ATT->DATA_PORT,ATT->DATA_PIN,GPIO_PIN_SET);//DATA } else{ HAL_GPIO_WritePin(ATT->DATA_PORT,ATT->DATA_PIN,GPIO_PIN_RESET);//DATA } HAL_GPIO_WritePin(ATT->CLK_PORT,ATT->CLK_PIN,GPIO_PIN_SET);//CLOCK Pol_Delay_us(10); HAL_GPIO_WritePin(ATT->CLK_PORT,ATT->CLK_PIN,GPIO_PIN_RESET);//CLOCK Pol_Delay_us(10); temp >>= 1; } HAL_GPIO_WritePin(ATT->CLK_PORT,ATT->CLK_PIN,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(ATT->DATA_PORT,ATT->DATA_PIN,GPIO_PIN_RESET);//DATA Pol_Delay_us(10); HAL_GPIO_WritePin(ATT->LE_PORT,ATT->LE_PIN,GPIO_PIN_SET);//LE Pol_Delay_us(10); HAL_GPIO_WritePin(ATT->LE_PORT,ATT->LE_PIN,GPIO_PIN_RESET); } void PE43711_UL4_atten_ctrl(uint8_t data){ uint8_t i = 0; uint8_t temp = 0; //data = 4 * data; // ATTEN ERROR 수정 temp = (uint8_t)data; HAL_GPIO_WritePin(ATT_EN_UL4_GPIO_Port,ATT_EN_UL4_Pin,GPIO_PIN_RESET); Pol_Delay_us(10); for(i = 0; i < 8; i++){ if((uint8_t)temp & 0x01){ HAL_GPIO_WritePin(ATT_DATA4_GPIO_Port,ATT_DATA4_Pin,GPIO_PIN_SET);//DATA } else{ HAL_GPIO_WritePin(ATT_DATA4_GPIO_Port,ATT_DATA4_Pin,GPIO_PIN_RESET);//DATA } HAL_GPIO_WritePin(ATT_CLOCK4_GPIO_Port,ATT_CLOCK4_Pin,GPIO_PIN_SET);//CLOCK Pol_Delay_us(10); HAL_GPIO_WritePin(ATT_CLOCK4_GPIO_Port,ATT_CLOCK4_Pin,GPIO_PIN_RESET);//CLOCK Pol_Delay_us(10); temp >>= 1; } HAL_GPIO_WritePin(ATT_CLOCK4_GPIO_Port,ATT_CLOCK4_Pin,GPIO_PIN_RESET);//CLOCK HAL_GPIO_WritePin(ATT_DATA4_GPIO_Port,ATT_DATA4_Pin,GPIO_PIN_RESET);//DATA Pol_Delay_us(10); HAL_GPIO_WritePin(ATT_EN_UL4_GPIO_Port,ATT_EN_UL4_Pin,GPIO_PIN_SET);//LE Pol_Delay_us(10); HAL_GPIO_WritePin(ATT_EN_UL4_GPIO_Port,ATT_EN_UL4_Pin,GPIO_PIN_RESET); }