increase KPLC KBus from 2 client to 16 clients
| | |
| | | #include "stm32f0xx_ll_utils.h" |
| | | #include "stm32f0xx_ll_pwr.h" |
| | | #include "stm32f0xx_ll_tim.h" |
| | | #include "stm32f0xx_ll_i2c.h" |
| | | |
| | | void SystemClock_Config(void); |
| | | void MX_IWDG_Init(void); |
| | |
| | | void MX_TIM6_Init(void); |
| | | void MX_SPI1_Init(void); |
| | | void MX_SPI2_Init(void); |
| | | |
| | | void MX_I2C1_Init(void); |
| | | void Soft_I2C1_Init(void); |
| | | void MX_ADC_Init(void); |
| | | |
| | | #endif /* __BSP__ */ |
| | |
| | | void TriggerPendSV(void); |
| | | void PendSvCallBack(void); |
| | | void SPI1_IRQ_CallBack(void); |
| | | |
| | | void DelayUs(int nUs); |
| | | void Delay100nS(int n100nS); |
| | | void Uart1SendDone(void); |
| | | void Uart1RecvDone(void); |
| | | void Uart2SendDone(void); |
| | |
| | | void displayInput(unsigned int cc); |
| | | void PutOutputSPI1(unsigned int Y); |
| | | |
| | | uint16_t SPI_Flash_ReadID(void); |
| | | |
| | | #endif /* __MYFUNCTIONS_H__ */ |
| | |
| | | // GPIO_InitStruct.Alternate = LL_GPIO_AF_0; |
| | | // LL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
| | | |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_15; |
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; |
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; |
| | | GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; |
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; |
| | | GPIO_InitStruct.Alternate = LL_GPIO_AF_0; |
| | | LL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
| | | |
| | | LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB); |
| | | /**SPI1 GPIO Configuration |
| | | PB3 ------> SPI1_SCK |
| | | PB4 ------> SPI1_MISO |
| | | PB5 ------> SPI1_MOSI |
| | | */ |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_3; |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_3 | LL_GPIO_PIN_4 | LL_GPIO_PIN_5; |
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; |
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; |
| | | GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; |
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; |
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; |
| | | GPIO_InitStruct.Alternate = LL_GPIO_AF_0; |
| | | LL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| | | |
| | | /* |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_4; |
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; |
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; |
| | |
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; |
| | | GPIO_InitStruct.Alternate = LL_GPIO_AF_0; |
| | | LL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| | | |
| | | */ |
| | | /* SPI1 interrupt Init */ |
| | | NVIC_SetPriority(SPI1_IRQn, 0); |
| | | // NVIC_EnableIRQ(SPI1_IRQn); |
| | |
| | | /* USER CODE END SPI2_Init 2 */ |
| | | } |
| | | |
| | | void Soft_I2C1_Init(void) |
| | | { |
| | | LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; |
| | | LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB); |
| | | /**I2C1 GPIO Configuration |
| | | PB6 ------> I2C1_SCL |
| | | PB7 ------> I2C1_SDA |
| | | */ |
| | | LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_6|LL_GPIO_PIN_7); |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_6 | LL_GPIO_PIN_7; |
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; |
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; |
| | | GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; |
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; |
| | | LL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| | | LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_6 | LL_GPIO_PIN_7); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * @brief I2C1 Initialization Function |
| | | * @param None |
| | | * @retval None |
| | | */ |
| | | void MX_I2C1_Init(void) |
| | | { |
| | | |
| | | /* USER CODE BEGIN I2C1_Init 0 */ |
| | | |
| | | /* USER CODE END I2C1_Init 0 */ |
| | | |
| | | LL_I2C_InitTypeDef I2C_InitStruct = {0}; |
| | | |
| | | LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; |
| | | |
| | | LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB); |
| | | /**I2C1 GPIO Configuration |
| | | PB8 ------> I2C1_SCL |
| | | PB9 ------> I2C1_SDA |
| | | */ |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_8; |
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; |
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; |
| | | GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; |
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; |
| | | GPIO_InitStruct.Alternate = LL_GPIO_AF_1; |
| | | LL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| | | |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_9; |
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; |
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; |
| | | GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN; |
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; |
| | | GPIO_InitStruct.Alternate = LL_GPIO_AF_1; |
| | | LL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| | | |
| | | /* Peripheral clock enable */ |
| | | LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_I2C1); |
| | | |
| | | /* USER CODE BEGIN I2C1_Init 1 */ |
| | | |
| | | /* USER CODE END I2C1_Init 1 */ |
| | | /** I2C Initialization |
| | | */ |
| | | LL_I2C_DisableOwnAddress2(I2C1); |
| | | LL_I2C_DisableGeneralCall(I2C1); |
| | | LL_I2C_EnableClockStretching(I2C1); |
| | | I2C_InitStruct.PeripheralMode = LL_I2C_MODE_I2C; |
| | | I2C_InitStruct.Timing = 0x20303E5D; |
| | | I2C_InitStruct.AnalogFilter = LL_I2C_ANALOGFILTER_ENABLE; |
| | | I2C_InitStruct.DigitalFilter = 0; |
| | | I2C_InitStruct.OwnAddress1 = 0; |
| | | I2C_InitStruct.TypeAcknowledge = LL_I2C_ACK; |
| | | I2C_InitStruct.OwnAddrSize = LL_I2C_OWNADDRESS1_7BIT; |
| | | LL_I2C_Init(I2C1, &I2C_InitStruct); |
| | | LL_I2C_EnableAutoEndMode(I2C1); |
| | | LL_I2C_SetOwnAddress2(I2C1, 0, LL_I2C_OWNADDRESS2_NOMASK); |
| | | /* USER CODE BEGIN I2C1_Init 2 */ |
| | | |
| | | /* USER CODE END I2C1_Init 2 */ |
| | | |
| | | } |
| | | |
| | | /* USART1 init function */ |
| | | void MX_USART1_UART_Init(void) |
| | |
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15; |
| | | |
| | | |
| | | #elif (BOARD_TYPE==9 || BOARD_TYPE==10 || BOARD_TYPE==15 || BOARD_TYPE == 16 ) |
| | | #elif (BOARD_TYPE==9 || BOARD_TYPE==10) |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_11|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10| |
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15; |
| | | |
| | | #elif (BOARD_TYPE==15 || BOARD_TYPE == 16 ) |
| | | |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_3|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7| |
| | | LL_GPIO_PIN_11|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10| |
New file |
| | |
| | | #include "spiFlash.h" |
| | | |
| | | |
| | |
| | | __nop(); |
| | | } |
| | | } |
| | | void Delay100nS(int n100nS) |
| | | { |
| | | for (int i=0;i<n100nS;i++) |
| | | for (volatile int j=0;j<1;j++) |
| | | { |
| | | __nop(); |
| | | } |
| | | } |
| | | |
| | | int Uart2RecvDMA(void * pBuf, int nSize) |
| | | { |
| | |
| | | STRCLK1_1(); |
| | | __enable_irq(); |
| | | } |
| | | |
| | | |
| | | #define W25X_WriteEnable 0x06 |
| | | #define W25X_WriteDisable 0x04 |
| | | #define W25X_ReadStatusReg 0x05 |
| | | #define W25X_ReadStatusReg2 0x35 |
| | | #define W25X_WriteStatusReg 0x01 |
| | | #define W25X_ReadData 0x03 |
| | | #define W25X_FastReadData 0x0B |
| | | #define W25X_FastReadDual 0x3B |
| | | #define W25X_PageProgram 0x02 |
| | | #define W25X_BlockErase 0xD8 |
| | | #define W25X_SectorErase 0x20 |
| | | #define W25X_ChipErase 0xC7 |
| | | #define W25X_PowerDown 0xB9 |
| | | #define W25X_ReleasePowerDown 0xAB |
| | | #define W25X_DeviceID 0xAB |
| | | #define W25X_ManufactDeviceID 0x90 |
| | | #define W25X_JedecDeviceID 0x9F |
| | | #define W25X_ReadUniqueID 0x4B |
| | | |
| | | |
| | | //W25X??/Q?????? |
| | | //W25Q80 ID 0XEF13 |
| | | //W25Q16 ID 0XEF14 |
| | | //W25Q32 ID 0XEF15 |
| | | //W25Q32 ID 0XEF16 |
| | | #define W25Q80 0XEF13 |
| | | #define W25Q16 0XEF14 |
| | | #define W25Q32 0XEF15 |
| | | #define W25Q64 0XEF16 |
| | | //????? |
| | | #define SPI_FLASH_CS PAout[15] //??FLASH,???????PB12? |
| | | #define SPI_CS_EN LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_15) |
| | | #define SPI_CS_NA LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_15) |
| | | |
| | | |
| | | |
| | | uint8_t SPI_Tranceive8(uint16_t Y) |
| | | { |
| | | int i=0; |
| | | while (LL_SPI_IsActiveFlag_TXE(SPI2) == RESET){ DelayUs(1);i++; if (i>320) break; } |
| | | LL_SPI_TransmitData8(SPI2,Y>>8); |
| | | i=0; |
| | | while (LL_SPI_IsActiveFlag_BSY(SPI2) == SET) { DelayUs(1);i++; if (i>320) break;} |
| | | i=0; |
| | | while (LL_SPI_IsActiveFlag_RXNE(SPI2) == RESET) { DelayUs(1);i++; if (i>320) break;} |
| | | Y = LL_SPI_ReceiveData8(SPI2); |
| | | return Y; |
| | | } |
| | | |
| | | uint8_t SPI_Transmit(uint8_t * tData, uint8_t nLen, uint8_t timeout) |
| | | { |
| | | for (int i=0;i<nLen;i++) { |
| | | SPI_Tranceive8(tData[i]); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | uint8_t SPI_TransmitReceive(uint8_t * tData, uint8_t * rData, uint8_t nLen, uint8_t timeout) |
| | | { |
| | | for (int i=0;i<nLen;i++) { |
| | | rData[i] = SPI_Tranceive8(tData[i]); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | uint8_t SPI_Flash_ReadSR(void) |
| | | { |
| | | uint8_t Data1[2]= {W25X_ReadStatusReg,0x00}; |
| | | uint8_t Rxdata[2]; |
| | | uint8_t byte=0; |
| | | SPI_CS_EN; |
| | | SPI_TransmitReceive(Data1,Rxdata,2,100); |
| | | SPI_CS_NA; |
| | | byte=Rxdata[1]; |
| | | return byte; |
| | | } |
| | | void SPI_Flash_Wait_Busy(void) |
| | | { |
| | | while((SPI_Flash_ReadSR()&0x01)==0x01); // ??BUSY??? |
| | | } |
| | | |
| | | void SPI_FLASH_Write_SR(uint8_t sr) |
| | | { |
| | | uint8_t Data1[2]= {W25X_ReadStatusReg,0x00}; |
| | | Data1[1]=sr; |
| | | SPI_CS_EN; |
| | | SPI_Transmit(Data1,2,100); |
| | | SPI_CS_NA; |
| | | } |
| | | |
| | | uint16_t SPI_Flash_ReadID(void) |
| | | { |
| | | uint16_t Temp = 0; |
| | | uint8_t Data1[4] = {W25X_ManufactDeviceID,0x00,0x00,0x00}; |
| | | uint8_t Data2[2]= {0x00,0x00}; |
| | | uint8_t Rxdata[2]; |
| | | SPI_CS_EN; |
| | | SPI_Transmit(Data1,4,100); |
| | | SPI_TransmitReceive(Data2,Rxdata,2,100); |
| | | SPI_CS_NA; |
| | | Temp=(Rxdata[0]<<8)|Rxdata[1]; |
| | | return Temp; |
| | | } |
| | | uint64_t SPI_Flash_ReadUID(uint8_t * Uid) |
| | | { |
| | | union |
| | | { |
| | | uint64_t Temp; |
| | | uint32_t temp2[2]; |
| | | uint8_t Rxdata[8]; |
| | | }uids; |
| | | |
| | | uint8_t Data1[5] = {W25X_ReadUniqueID,0x00,0x00,0x00,0x00}; |
| | | uint8_t Data2[8]= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; |
| | | SPI_CS_EN; |
| | | SPI_Transmit(Data1,5,100); |
| | | SPI_TransmitReceive(Data2,uids.Rxdata,8,100); |
| | | SPI_CS_NA; |
| | | memcpy(Uid,uids.Rxdata,8); |
| | | uint32_t t1 = __rev(uids.temp2[0]); |
| | | uids.temp2[0]= __rev(uids.temp2[1]); |
| | | uids.temp2[1]=t1; |
| | | return uids.Temp; |
| | | } |
| | | |
| | | void SPI_FLASH_Write_Enable(void) |
| | | { |
| | | uint8_t Txdata[2]={W25X_WriteEnable}; |
| | | SPI_CS_EN; |
| | | SPI_Transmit(Txdata,1,100); |
| | | SPI_CS_NA; |
| | | } |
| | | |
| | | void SPI_FLASH_Write_Disable(void) |
| | | { |
| | | uint8_t Txdata[2]={W25X_WriteDisable}; |
| | | SPI_CS_EN; |
| | | SPI_Transmit(Txdata,1,100); |
| | | SPI_CS_NA; |
| | | } |
| | | void W25QXX_Erase_Sector(uint32_t Dst_Addr) |
| | | { |
| | | //??falsh????,??? |
| | | |
| | | Dst_Addr*=4096; |
| | | uint8_t Data1[4] = {W25X_SectorErase,0x00,0x00,0x00}; |
| | | Data1[1]=Dst_Addr>>16; |
| | | Data1[2]=Dst_Addr>>8; |
| | | Data1[3]=Dst_Addr; |
| | | SPI_FLASH_Write_Enable(); //SET WEL ,??? |
| | | SPI_Flash_Wait_Busy(); |
| | | |
| | | SPI_CS_EN; |
| | | SPI_Transmit(Data1,4,100); |
| | | SPI_CS_NA; |
| | | SPI_Flash_Wait_Busy(); //?????? |
| | | } |
| | | void W25QXX_Read(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead) |
| | | { |
| | | uint16_t i; |
| | | uint8_t Data1[4] = {W25X_ReadData,0x00,0x00,0x00}; |
| | | uint8_t Data2[16]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; |
| | | |
| | | Data1[1]=ReadAddr>>16; |
| | | Data1[2]=ReadAddr>>8; |
| | | Data1[3]=ReadAddr; |
| | | |
| | | SPI_CS_EN; |
| | | SPI_Transmit(Data1,4,100); |
| | | // HAL_SPI_TransmitReceive(&hspi1,pBuffer,pBuffer,NumByteToRead,10); |
| | | // HAL_SPI_TransmitReceive_DMA(&hspi1,pBuffer,pBuffer,NumByteToRead); |
| | | SPI_TransmitReceive(pBuffer,pBuffer,NumByteToRead,100); |
| | | /* |
| | | for(i=0;i<NumByteToRead/16;i++) |
| | | { |
| | | HAL_SPI_TransmitReceive(&hspi1,Data2,pBuffer+i*16,16,100); |
| | | } |
| | | if (NumByteToRead%16) |
| | | { |
| | | HAL_SPI_TransmitReceive(&hspi1,Data2,pBuffer+i*16,NumByteToRead%16,100); |
| | | } |
| | | */ |
| | | SPI_CS_NA; |
| | | } |
| | | void W25QXX_Write_Page(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite) |
| | | { |
| | | uint8_t Data1[4] = {W25X_PageProgram,0x00,0x00,0x00}; |
| | | |
| | | Data1[1]=WriteAddr>>16; |
| | | Data1[2]=WriteAddr>>8; |
| | | Data1[3]=WriteAddr; |
| | | |
| | | SPI_FLASH_Write_Enable(); //SET WEL ,??? |
| | | SPI_Flash_Wait_Busy(); |
| | | SPI_CS_EN; |
| | | SPI_Transmit(Data1,4,100); |
| | | SPI_Transmit(pBuffer,NumByteToWrite,100); |
| | | SPI_CS_NA; |
| | | SPI_Flash_Wait_Busy(); //?????? |
| | | } |
| | | /* |
| | | int flash_func(int argc, char * argv[]) |
| | | { |
| | | char str1[128]; |
| | | int len1; |
| | | uint8_t databuf[4096]; |
| | | if (argc<=1) |
| | | { |
| | | len1=sprintf(str1," id uid sr en dis read speed er write write2\r\n");fputstr(str1,len1,0); |
| | | }else if (argc>=2) |
| | | { |
| | | if (strcmp(argv[1],"id")==0) |
| | | { |
| | | uint16_t flashid; |
| | | flashid=SPI_Flash_ReadID(); |
| | | len1=sprintf(str1,"Readid %4X \r\n",flashid); |
| | | fputstr(str1,len1,0); |
| | | |
| | | } else if (strcmp(argv[1],"sr")==0) |
| | | { |
| | | uint8_t flashsr; |
| | | flashsr=SPI_Flash_ReadSR(); |
| | | len1=sprintf(str1,"Readsr %2X \r\n",flashsr); |
| | | fputstr(str1,len1,0); |
| | | } else if (strcmp(argv[1],"uid")==0) |
| | | { |
| | | uint8_t Uid[8]; |
| | | uint64_t uid; |
| | | uid=SPI_Flash_ReadUID(Uid); |
| | | len1=sprintf(str1,"Uid %016llX %02X%02X%02X%02X%02X%02X%02X%02X \r\n",uid,Uid[0],Uid[1],Uid[2],Uid[3],Uid[4],Uid[5],Uid[6],Uid[7]); |
| | | fputstr(str1,len1,0); |
| | | } else if (strcmp(argv[1],"en")==0) |
| | | { |
| | | SPI_FLASH_Write_Enable(); |
| | | len1=sprintf(str1,"Write Enable \r\n"); |
| | | fputstr(str1,len1,0); |
| | | } else if (strcmp(argv[1],"dis")==0) |
| | | { |
| | | SPI_FLASH_Write_Disable(); |
| | | len1=sprintf(str1,"Write Disable \r\n"); |
| | | fputstr(str1,len1,0); |
| | | }else if (strcmp(argv[1],"read")==0) |
| | | { |
| | | len1=0; |
| | | uint32_t addr=0; |
| | | if (argc>=3) addr=atoi(argv[2]); |
| | | uint16_t datalens=256; |
| | | len1=sprintf(str1,"Read Flash %08X for %d bytes \r\n",addr,datalens); |
| | | fputstr(str1,len1,0); |
| | | W25QXX_Read(databuf,addr,datalens); |
| | | for (int i=0;i<16;i++) |
| | | { |
| | | len1=sprintf(str1,"%2X: ",i); |
| | | for (int j=0;j<16;j++) |
| | | { |
| | | len1+=sprintf(str1+len1," %2X",databuf[i*16+j]); |
| | | } |
| | | len1+=sprintf(str1+len1,"\r\n"); |
| | | fputstr(str1,len1,0); |
| | | } |
| | | }else if (strcmp(argv[1],"speed")==0) |
| | | { |
| | | len1=0; |
| | | uint32_t addr=0; |
| | | if (argc>=3) addr=atoi(argv[2]); |
| | | uint16_t datalens=4096; |
| | | int times=1000; |
| | | len1=sprintf(str1,"Read Flash speed test for %d bytes %d times\r\n",datalens,times); |
| | | fputstr(str1,len1,0); |
| | | int time1=HAL_GetTick(); |
| | | for (int i=0;i<times;i++) |
| | | { |
| | | addr=i*4096; |
| | | W25QXX_Read(databuf,addr,datalens); |
| | | } |
| | | int time2=HAL_GetTick(); |
| | | int deltime=time2-time1; |
| | | if (deltime < 1) {deltime =1;} |
| | | len1=sprintf(str1,"%d mS %dK/s \r\n",deltime,datalens*times/deltime); |
| | | fputstr(str1,len1,0); |
| | | |
| | | }else if (strcmp(argv[1],"er")==0) |
| | | { |
| | | uint32_t addr=0; |
| | | if (argc>=3) addr=atoi(argv[2]); |
| | | W25QXX_Erase_Sector(addr); |
| | | len1=sprintf(str1," erase %d\r\n",addr); |
| | | fputstr(str1,len1,0); |
| | | } else if (strcmp(argv[1],"write")==0) |
| | | { |
| | | uint32_t addr=0; |
| | | if (argc>=3) addr=atoi(argv[2]); |
| | | uint16_t datalens=256; |
| | | uint8_t value; |
| | | if (argc>=4) |
| | | { |
| | | value=atoi(argv[3]); |
| | | for(int i=0;i<256;i++) {databuf[i]=value;} |
| | | }else for(int i=0;i<256;i++) {databuf[i]=i;} |
| | | W25QXX_Write_Page(databuf,addr,datalens); |
| | | len1=sprintf(str1," write %06X for %d bytes\r\n",addr,datalens); |
| | | fputstr(str1,len1,0); |
| | | } else if (strcmp(argv[1],"write2")==0) |
| | | { |
| | | uint32_t addr=0; |
| | | if (argc>=3) addr=atoi(argv[2]); |
| | | uint16_t datalens=256; |
| | | for(int i=0;i<256;i++) {databuf[i]=0;} |
| | | W25QXX_Write_Page(databuf,addr,datalens); |
| | | len1=sprintf(str1," write %06X for %d bytes\r\n",addr,datalens); |
| | | fputstr(str1,len1,0); } |
| | | else |
| | | { |
| | | len1=sprintf(str1,"unknown %s \r\n",argv[1]); |
| | | fputstr(str1,len1,0); |
| | | } |
| | | |
| | | } |
| | | return 0; |
| | | } |
| | | */ |
| | | |
| | |
| | | |
| | | <project> |
| | | <PathAndName>.\MDK-ARM\KPLC_C8T6_ç®æPLC.uvprojx</PathAndName> |
| | | <NodeIsActive>1</NodeIsActive> |
| | | <NodeIsExpanded>1</NodeIsExpanded> |
| | | </project> |
| | | |
| | | <project> |
| | |
| | | |
| | | <project> |
| | | <PathAndName>.\MDK-ARM\KMini_New_CCT6.uvprojx</PathAndName> |
| | | <NodeIsActive>1</NodeIsActive> |
| | | <NodeIsExpanded>1</NodeIsExpanded> |
| | | </project> |
| | | |
| | | <project> |
| | |
| | | |
| | | }; |
| | | |
| | | #define BOARD_TYPE 7 |
| | | #define BOARD_TYPE 9 |
| | | #define BOARD_VER 1 |
| | | |
| | | #define ENABLE_PLC 1 |
| | |
| | | #include "KBus.h" |
| | | |
| | | extern stKBusDef KBus1; |
| | | |
| | | #define Uart1RxBufSize 256 |
| | | #define RX2BUFSIZE 64 |
| | | #define TX2BUFSIZE 64 |
| | | #define DefaultUart1Baud 115200 |
| | | #define DefaultUart2Baud 1000000 |
| | | #define AlterUart2Baud 500000 |
| | | |
| | | extern volatile char Uart1BaudGot; |
| | | extern volatile char Uart1BaudFirstGot; |
| | | |
| | | extern unsigned char Uart1Mode; |
| | | extern unsigned int Uart1Baud; |
| | | extern unsigned int Uart2Baud; |
| | | |
| | | extern volatile int PendSvCount; |
| | | |
| | | extern unsigned char Uart1RxBuf1[Uart1RxBufSize]; |
| | | extern unsigned char Uart1TxBuf1[260]; |
| | | |
| | | extern unsigned char Uart2RxBuf1[RX2BUFSIZE]; |
| | | extern unsigned char Uart2TxBuf1[TX2BUFSIZE]; |
| | | |
| | | extern unsigned short Uart1RxBuf1DataLen; |
| | | extern unsigned short Uart2RxBuf1DataLen; |
| | | |
| | | /* USER CODE END Private defines */ |
| | | |
| | | #ifdef __cplusplus |
| | |
| | | extern int Region$$Table$$Limit; |
| | | |
| | | #define MAKE_VER(x,y) ((x<<8)|y) |
| | | #define APP_VER MAKE_VER(1,15) |
| | | #define APP_VER MAKE_VER(1,16) |
| | | |
| | | const stAppInfoBlock AppInfoBlock __attribute__((at(APPINFOBLOCK_ADDR))) = |
| | | { |
| | |
| | | unsigned char Uart2RxBuf[RX2BUFSIZE]; |
| | | unsigned char Uart2TxBuf[TX2BUFSIZE]; |
| | | |
| | | unsigned char Uart1RxBuf1[Uart1RxBufSize]; |
| | | unsigned char Uart1TxBuf1[260]; |
| | | |
| | | unsigned char Uart2RxBuf1[RX2BUFSIZE]; |
| | | unsigned char Uart2TxBuf1[TX2BUFSIZE]; |
| | | |
| | | unsigned short Uart1RxBuf1DataLen = 0; |
| | | unsigned short Uart2RxBuf1DataLen = 0; |
| | | |
| | | unsigned char Uart1Mode = 1; //Uart1å·¥ä½æ¨¡å¼ï¼ 0 : æ®éï¼ 1 : éä¼ æ¨¡å¼ |
| | | |
| | | unsigned int Uart1Baud = DefaultUart1Baud; |
| | | unsigned int Uart2Baud = DefaultUart2Baud; |
| | | |
| | | //unsigned char Uart1RecvBuf1[Uart1RecvBufSize]; |
| | | //unsigned short Uart1RecvBuf1DataLen=0; |
| | | |
| | | //unsigned char Uart2RecvBuf1[128]; |
| | | //unsigned short Uart2RecvBuf1DataLen=0; |
| | | |
| | | volatile char Uart1BaudGot=0; |
| | | volatile char Uart1BaudFirstGot=0; |
| | | volatile char Uart1DmaInts=0; |
| | | |
| | | |
| | | unsigned char SlowFlicker=0; |
| | | unsigned char FastFlicker=0; |
| | | |
| | |
| | | /* USER CODE END PFP */ |
| | | |
| | | /* USER CODE BEGIN 0 */ |
| | | #define SET_SCL LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_6) |
| | | #define CLR_SCL LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_6) |
| | | #define GET_SCL LL_GPIO_IsInputPinSet(GPIOB,LL_GPIO_PIN_6) |
| | | #define SET_SDA LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_7) |
| | | #define CLR_SDA LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_7) |
| | | #define GET_SDA LL_GPIO_IsInputPinSet(GPIOB,LL_GPIO_PIN_7) |
| | | |
| | | |
| | | void soft_i2c_start() |
| | | { |
| | | SET_SDA; |
| | | SET_SCL; |
| | | Delay100nS(1); |
| | | CLR_SDA; |
| | | Delay100nS(1); |
| | | CLR_SCL; |
| | | Delay100nS(1); |
| | | } |
| | | void soft_i2c_stop() |
| | | { |
| | | CLR_SDA; |
| | | Delay100nS(1); |
| | | SET_SCL; |
| | | Delay100nS(1); |
| | | SET_SDA; |
| | | Delay100nS(1); |
| | | } |
| | | void soft_i2c_send8(int nData) |
| | | { |
| | | int mask; |
| | | mask = 0x80; |
| | | for (int j=0;j<8;j++) |
| | | { |
| | | if (nData & mask) {SET_SDA;} |
| | | else {CLR_SDA;} |
| | | Delay100nS(1); |
| | | SET_SCL; |
| | | mask>>=1; |
| | | Delay100nS(1); |
| | | CLR_SCL; |
| | | } |
| | | return; |
| | | } |
| | | |
| | | uint8_t soft_i2c_recv8() |
| | | { |
| | | unsigned char nData=0; |
| | | for (int j=0;j<8;j++) |
| | | { |
| | | nData <<=1; |
| | | Delay100nS(1); |
| | | SET_SCL; |
| | | nData |= GET_SDA; |
| | | Delay100nS(1); |
| | | CLR_SCL; |
| | | } |
| | | return nData; |
| | | } |
| | | |
| | | void soft_i2c_send_ack() |
| | | { |
| | | CLR_SDA; |
| | | Delay100nS(2); |
| | | SET_SCL; |
| | | Delay100nS(2); |
| | | CLR_SCL; |
| | | SET_SDA; |
| | | Delay100nS(2); |
| | | |
| | | } |
| | | |
| | | void soft_i2c_send_nack() |
| | | { |
| | | SET_SDA; |
| | | Delay100nS(1); |
| | | SET_SCL; |
| | | Delay100nS(1); |
| | | CLR_SCL; |
| | | Delay100nS(1); |
| | | SET_SDA; |
| | | } |
| | | uint8_t soft_i2c_wait_ack(int nTime) |
| | | { |
| | | SET_SDA; // Open Drain; |
| | | Delay100nS(1); |
| | | SET_SCL; |
| | | for (int j=0;j<nTime;j++){ |
| | | Delay100nS(1); |
| | | if (GET_SDA == 0) break; |
| | | if (j==nTime-1) return 0; |
| | | } |
| | | CLR_SCL; |
| | | return 1; |
| | | } |
| | | uint8_t soft_i2c_check_addr(uint8_t Addr) |
| | | { |
| | | uint8_t res=0; |
| | | soft_i2c_start(); |
| | | // Send Device Addr 7bit; |
| | | soft_i2c_send8(Addr); |
| | | if (soft_i2c_wait_ack(10)) {res=1;} |
| | | //Stop |
| | | soft_i2c_stop(); |
| | | // */ |
| | | return res; |
| | | |
| | | } |
| | | uint8_t soft_i2c_read_len( uint8_t Addr , uint8_t Reg, uint8_t len,uint8_t *buf) |
| | | { |
| | | int res=0; |
| | | //Start |
| | | soft_i2c_start(); |
| | | // Send Device Addr 7bit; |
| | | soft_i2c_send8(Addr &0xfe); |
| | | // wait Ack; |
| | | if (!soft_i2c_wait_ack(1000)) {soft_i2c_stop();return 1;} |
| | | CLR_SCL; |
| | | // Send Reg Addr 8bit; |
| | | soft_i2c_send8(Reg); |
| | | if (!soft_i2c_wait_ack(1000)) {soft_i2c_stop();return 2;} |
| | | //Start |
| | | soft_i2c_start(); |
| | | // Send Device Addr 7bit; |
| | | soft_i2c_send8(Addr | 1); |
| | | if (!soft_i2c_wait_ack(1000)) {soft_i2c_stop();return 3;} |
| | | |
| | | // /* |
| | | // Recv Data(s) n * 8bit; |
| | | SET_SDA; // Open Drain; |
| | | for (int i=0;i<len;i++) |
| | | { |
| | | // recv 1 data 8bit; |
| | | unsigned char nData = 0; |
| | | nData = soft_i2c_recv8(); |
| | | buf[i]=nData; |
| | | // Send ACK / NACK; |
| | | if (i != len -1) { //ACK |
| | | soft_i2c_send_ack(); |
| | | } else { // NACK |
| | | soft_i2c_send_nack(); |
| | | } |
| | | } |
| | | |
| | | //Stop |
| | | soft_i2c_stop(); |
| | | // */ |
| | | return res; |
| | | } |
| | | |
| | | uint8_t soft_i2c_write_len(uint8_t Addr , uint8_t Reg, uint8_t len, uint8_t *buf) |
| | | { |
| | | int res=0; |
| | | //Start |
| | | soft_i2c_start(); |
| | | // Send Device Addr 7bit; |
| | | soft_i2c_send8(Addr &0xfe); |
| | | // wait Ack; |
| | | if (!soft_i2c_wait_ack(1000)) return 1; |
| | | CLR_SCL; |
| | | // Send Reg Addr 8bit; |
| | | soft_i2c_send8(Reg); |
| | | if (!soft_i2c_wait_ack(1000)) return 2; |
| | | for (int i=0;i<len;i++) |
| | | { |
| | | // send 1 data 8bit; |
| | | unsigned char nData = buf[i]; |
| | | soft_i2c_send8(nData); |
| | | // wait Ack; |
| | | if (!soft_i2c_wait_ack(1000)) {res = 5; break;} |
| | | } |
| | | //Stop |
| | | soft_i2c_stop(); |
| | | return res; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | int HexToInt(char ch) |
| | | { |
| | |
| | | #endif |
| | | if (Uart2Stat.bPacketRecved) |
| | | { |
| | | KBusParsePacket(&KBus1, (pKBPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen); |
| | | Uart2RecvBuf1DataLen=0; |
| | | KBusParsePacket(&KBus1, (pKBPacket)Uart2RxBuf1, Uart2RxBuf1DataLen); |
| | | Uart2RxBuf1DataLen=0; |
| | | Uart2Stat.bPacketRecved=0; |
| | | Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1)); |
| | | Uart2RecvDMA(Uart2RxBuf1,sizeof(Uart2RxBuf1)); |
| | | KMem.WDT[2]++; |
| | | } |
| | | } |
| | |
| | | break; |
| | | case KBusEvDataUpdate: |
| | | if (KBus1.bMaster) { |
| | | KMem.WLX[0]=KBusMem.WLX[0]; //KPLC with KBus Master |
| | | KBusMem.WLY[0]=KMem.WLY[0]; |
| | | for (int i=0;i<16;i++) |
| | | { |
| | | KMem.WLX[i]=KBusMem.WLX[i]; //KPLC with KBus Master |
| | | KBusMem.WLY[i]=KMem.WLY[i]; |
| | | } |
| | | } else if (KBus1.bSlave) { |
| | | KMem.WLX[0]=KBusMem.WLY[0]; //KPLC with KBus Slave |
| | | KBusMem.WLX[0]=KMem.WLY[0]; |
| | | KMem.WLX[1]=KBusMem.WLY[1]; //KPLC with KBus Slave |
| | | KBusMem.WLX[1]=KMem.WLY[1]; |
| | | KMem.WLX[2]=KBusMem.WLY[2]; //KPLC with KBus Slave |
| | | KBusMem.WLX[2]=KMem.WLY[2]; |
| | | KMem.WLX[3]=KBusMem.WLY[3]; //KPLC with KBus Slave |
| | | KBusMem.WLX[3]=KMem.WLY[3]; |
| | | } |
| | | |
| | | break; |
| | | case KBusEvCmdResponse: |
| | | break; |
| | |
| | | Uart1Baud = DefaultUart1Baud; |
| | | MX_USART1_UART_Init(); |
| | | MX_USART2_UART_Init(); |
| | | |
| | | MX_SPI1_Init(); |
| | | LL_SPI_EnableIT_RXNE(SPI1); |
| | | /* |
| | | // MX_I2C1_Init(); |
| | | Soft_I2C1_Init(); |
| | | |
| | | unsigned char buf1[10] = {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa}; |
| | | unsigned char buf2[10]; |
| | | // KMem.WDB[80] = soft_i2c_read_len(0xa0,0x00,8,buf2); |
| | | // for (int i=0;i<8;i++){ |
| | | // buf2[i]+=1; |
| | | // } |
| | | // soft_i2c_write_len (0xa0,0x00,8,buf2); |
| | | // DelayUs(500); |
| | | // KMem.WDB[80] = soft_i2c_read_len(0xa0,0x00,8,&KMem.WDB[81]); |
| | | // DelayUs(500); |
| | | // KMem.WDB[90] = soft_i2c_read_len(0xa0,0x00,8,&KMem.WDB[91]); |
| | | |
| | | int nPos = 80; |
| | | int nCount =0; |
| | | for (int i=0;i<256;i++) |
| | | { |
| | | if (soft_i2c_check_addr(i)){ |
| | | KMem.WDB[nPos + 1 + nCount ] = i; |
| | | nCount+=1; |
| | | } |
| | | DelayUs(10); |
| | | } |
| | | KMem.WDB[nPos] = nCount; |
| | | */ |
| | | #if (BOARD_TYPE == 14) |
| | | // MX_SPI2_Init(); |
| | | // MX_ADC_Init(); |
| | |
| | | MX_SPI2_Init(); |
| | | MX_ADC_Init(); |
| | | #endif |
| | | |
| | | |
| | | MX_IWDG_Init(); |
| | | |
| | | MX_TIM6_Init(); |
| | |
| | | LL_USART_EnableIT_TC(USART1); |
| | | |
| | | // LL_USART_EnableIT_RXNE(USART2); |
| | | Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1)); |
| | | Uart2RecvDMA(Uart2RxBuf1,sizeof(Uart2RxBuf1)); |
| | | LL_USART_EnableIT_IDLE(USART2); |
| | | LL_USART_EnableIT_TC(USART2); |
| | | #if (BOARD_TYPE == 13) |
| | |
| | | // LL_USART_SetAutoBaudRateMode(USART2, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE); |
| | | } |
| | | //LL_USART_EnableIT_TXE(USART1); |
| | | |
| | | // KMem.WDT[50] = SPI_Flash_ReadID(); |
| | | |
| | | /* USER CODE END 2 */ |
| | | |
| | | |
| | |
| | | KWireLessInit(KMem.EffJumperSW&0x20,KMem.EffJumperSW&0x0f); |
| | | KWireLessStart(); |
| | | #endif |
| | | |
| | | |
| | | while (1) |
| | | { |
| | |
| | | // memcpy(&KMem.SDT[64+nSize/2],&KBusChnStats[2],nSize); |
| | | // for (int i=0;i<128;i++) { SDT[i]=i; } |
| | | // SDT[48]=55; |
| | | if (Uart1RecvBuf1DataLen >0 && Uart1Stat.bPacketRecved) |
| | | if (Uart1RxBuf1DataLen >0 && Uart1Stat.bPacketRecved) |
| | | { |
| | | int res1 = -1; |
| | | res1 = ModBusSlaveParsePkg(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); |
| | | res1 = ModBusSlaveParsePkg(1, Uart1RxBuf1, Uart1RxBuf1DataLen); |
| | | if (res1 !=0) |
| | | { |
| | | KLParsePacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); |
| | | KLParsePacket(1, Uart1RxBuf1, Uart1RxBuf1DataLen); |
| | | } |
| | | Uart1RecvBuf1DataLen=0; |
| | | Uart1RxBuf1DataLen=0; |
| | | Uart1Stat.bPacketRecved=0; |
| | | Uart1IdelTimer = 0; |
| | | }else { |
| | |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 1 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 1 |
| | | |
| | | |
| | | BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: |
| | |
| | | CODE 000BH 0003H ABSOLUTE |
| | | CODE 000EH 0009H UNIT ?PR?_MODBUSPARSEPACKET?MODBUS |
| | | CODE 0017H 0001H UNIT ?PR?TIMER0_ISR?MAIN |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 2 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 2 |
| | | |
| | | |
| | | CODE 0018H 0001H UNIT ?PR?TIMER1_ISR?MAIN |
| | |
| | | ?PR?_UART3SENDPACKET?MAIN 0009H 0003H |
| | | |
| | | ?PR?_SLPINIT?SLP 0009H 0006H |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 3 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 3 |
| | | |
| | | |
| | | |
| | |
| | | C:0642H LINE# 134 |
| | | C:0643H LINE# 135 |
| | | C:0644H LINE# 136 |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 4 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 4 |
| | | |
| | | |
| | | C:0646H LINE# 185 |
| | |
| | | C:08AAH PUBLIC _Delay_us |
| | | C:0876H PUBLIC Uart1RecvPacket |
| | | D:00AFH PUBLIC IE2 |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 5 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 5 |
| | | |
| | | |
| | | C:07EDH PUBLIC Uart3RecvPacket |
| | |
| | | C:08A6H LINE# 201 |
| | | C:08A9H LINE# 203 |
| | | ------- ENDPROC UART3INIT |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 6 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 6 |
| | | |
| | | |
| | | ------- PROC UART3_ISR |
| | |
| | | C:07E7H LINE# 303 |
| | | C:07E9H LINE# 304 |
| | | C:07ECH LINE# 305 |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 7 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 7 |
| | | |
| | | |
| | | ------- ENDPROC _UART3SENDPACKET |
| | |
| | | C:074FH LINE# 369 |
| | | C:074FH LINE# 371 |
| | | C:0752H LINE# 374 |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 8 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 8 |
| | | |
| | | |
| | | C:0755H LINE# 376 |
| | |
| | | C:0856H LINE# 14 |
| | | ------- ENDPROC _SLPBCC |
| | | ------- PROC _SLPINIT |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 9 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 9 |
| | | |
| | | |
| | | D:0009H SYMBOL pSLP |
| | |
| | | C:0428H LINE# 62 |
| | | C:0445H LINE# 65 |
| | | C:0470H LINE# 66 |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 10 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 10 |
| | | |
| | | |
| | | C:0470H LINE# 67 |
| | |
| | | C:057AH LINE# 121 |
| | | C:057AH LINE# 122 |
| | | C:057AH LINE# 123 |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 11 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 11 |
| | | |
| | | |
| | | ------- ENDPROC _SLPPROCESS |
| | |
| | | C:01EDH PUBLIC ?C?PLDOPTR |
| | | ------- ENDMOD ?C?PLDOPTR |
| | | |
| | | BL51 BANKED LINKER/LOCATER V6.22 06/13/2024 13:47:31 PAGE 12 |
| | | BL51 BANKED LINKER/LOCATER V6.22 09/23/2024 09:07:48 PAGE 12 |
| | | |
| | | |
| | | ------- MODULE ?C?PSTOPTR |
New file |
| | |
| | | :03000000020640B5 |
| | | :0C064000787FE4F6D8FD75815C02068727 |
| | | :1008BD00015900014400015A00014500025B00008E |
| | | :1008AA00EF1FAA0670011E4A60087D051DED60F063 |
| | | :0208BA0080FAC2 |
| | | :0108BC002219 |
| | | :03000B00020017D9 |
| | | :0100170032B6 |
| | | :03001B00020018C8 |
| | | :0100180032B5 |
| | | :1008910075AC1043AC4043D10275D5A075D4FF436C |
| | | :0908A100D10843BA0243AF08225A |
| | | :03008B0002001E52 |
| | | :10001E00C0E0C0D075D000C000E5AC30E01653ACE7 |
| | | :10002E00FE7451255AF8A6ADE55AC3940750020541 |
| | | :10003E005A754500E5AC30E10553ACFDC201D00068 |
| | | :05004E00D0D0D0E0322B |
| | | :10081200E4F594F593F592F5917596FFF595F5B299 |
| | | :10082200F5B1F5B4F5B3F5CAF5C9F5CCF5CBF5E2FA |
| | | :03083200F5E122CB |
| | | :05000300E580F4FF227E |
| | | :030008008FA022A4 |
| | | :0607C7008B098A0A890B70 |
| | | :1007CD00E4FFEFC39D50182001FDAB09AA0AA90B48 |
| | | :0F07DD008F827583001200A7F5ADD2010F80E364 |
| | | :0107EC0022EA |
| | | :1007ED00E545C394025003054522B2C6750C00754C |
| | | :1007FD000D00750E51855A0F7B007A00792112027A |
| | | :05080D00D4E4F55A22BD |
| | | :10087600E544C394025003054422B2C67B007A00C5 |
| | | :0B0886007949AD5912000EE4F559222B |
| | | :0100190022C4 |
| | | :1006CC00A2B6B3E4335401FFAE09EE54FE4FF50964 |
| | | :1006DC00A2B7B3E433540125E0FFAE09EE54FD4F4D |
| | | :1006EC00F509A2C1B3E433540125E025E0FFAE09BE |
| | | :1006FC00EE54FB4FF509A2C2B3E433540133333348 |
| | | :10070C0054F8FFAE09EE54F74FF509A2C3B3E43326 |
| | | :10071C005401C454F0FFAE09EE54EF4FF509A2C4D6 |
| | | :10072C00B3E4335401C43354E0FFAE09EE54DF4F4D |
| | | :10073C00F509AF09EF54BFF509AF09EF547FF5097F |
| | | :02074C00AF09F3 |
| | | :01074E002288 |
| | | :10074F00858308120812120891D2ACD2AF1206CCD0 |
| | | :10075F008F48AF48EFC4135401F546E548540FF5E1 |
| | | :10076F0047750CFF750D07750EC77B007A00792151 |
| | | :10077F001200538546218547221200038F48854872 |
| | | :10078F0023B2C61207ED7B007A007921120471E5BE |
| | | :10079F00416004C2C58002D2C5AF241200081208FE |
| | | :1007AF007612001A1200197F647E001208AA055CE7 |
| | | :0807BF00E55C70C5055B80C11B |
| | | :060835008B168A178918DA |
| | | :10083B00E4FFFEEEC39D5013AB16AA17A9188E82C8 |
| | | :0B084B007583001200A72FFF0E80E84D |
| | | :01085600227F |
| | | :100053008B098A0A890B90001DE4F5F01201C09008 |
| | | :100063000021E4F5F01201C0AB0CAA0DA90EC003E8 |
| | | :10007300C002C001AB09AA0AA90B90001812021D05 |
| | | :01008300225A |
| | | :100857008B198A1A891BAB1CAA1DA91EC003C002CB |
| | | :0F086700C001AB19AA1AA91B90001812021D227A |
| | | :0602D4008B098A0A890B68 |
| | | :1002DA00AB0CAA0DA90E8B108A118912E50F6404C2 |
| | | :1002EA006003020470E50F14FD120835AB10AA1161 |
| | | :1002FA00A9129000031200A76F6003020470AB09F1 |
| | | :10030A00AA0AA90B12008E7003020394AB10AA1159 |
| | | :10031A00A91212008E6469705FAB09AA0AA90B9030 |
| | | :10032A0000041200A7FFAB10AA11A9129000011233 |
| | | :10033A0000A76F7043AB09AA0AA90B900017041211 |
| | | :10034A00011990001DE4F5F01201C0AB10AA11A921 |
| | | :10035A00129000021200A7FFAB09AA0AA90B90008B |
| | | :10036A00041200A7FD7C00E92405F9E43AFAE92D14 |
| | | :10037A00F9EC3AFAEF120107AB09AA0AA90B9000A5 |
| | | :10038A00061200A7900003020119AB10AA11A912C4 |
| | | :0A039A0012008E6449600302047033 |
| | | :1003A400E50B240FF9E4350A850913F5148915AB17 |
| | | :1003B40009AA0AA90B9000011200A7FFAB10AA1109 |
| | | :1003C400A9129000011200A76F600302047090004C |
| | | :1003D400021200A7AB09AA0AA90B90000312011983 |
| | | :1003E40090001BE4F5F01201C0AB13AA14A9157414 |
| | | :1003F40069120107AB09AA0AA90B9000011200A710 |
| | | :10040400AB13AA14A915900001120119AB09AA0A89 |
| | | :10041400A90B9000021200A7AB13AA14A91590000F |
| | | :1004240002120119AB09E50B240FF9E4350AFA7D30 |
| | | :1004340003120835AB13AA14A915900003EF120197 |
| | | :1004440019AB09E50B240FF9E4350AFAC003C0021D |
| | | :10045400C001AA0AA90B9000181201ED89828A83AF |
| | | :0C046400D001D002D0030D7C0012027AFF |
| | | :010470002269 |
| | | :06058A008B0C8A0D890EA6 |
| | | :10059000E9240FF9E43A8B0FF5108911A90E9000A8 |
| | | :1005A000021200A790000B120119AB0FAA10A9119B |
| | | :1005B0007449120107AB0CAA0DA90E900004120099 |
| | | :1005C000A7AB0FAA10A911900001120119AB0CAA38 |
| | | :1005D0000DA90E9000041200A7FF7E00E9240AF97D |
| | | :1005E000E43AFAE92FF9EE3AFA12008EAB0FAA10AC |
| | | :1005F000A911900002120119AB0CE50E240FF9E4C9 |
| | | :10060000350DFA7D03120835AB0FAA10A911900021 |
| | | :1006100003EF120119AB0CE50E240FF9E4350DFAC6 |
| | | :10062000C003C002C001AA0DA90E9000181201ED6E |
| | | :1006300089828A83D001D002D0030D7C0002027A25 |
| | | :100471008B098A0A890B12008E70030205359000E0 |
| | | :100481002112013B540F600302057A9000171200FC |
| | | :10049100A7602090001F7401120119900020120022 |
| | | :1004A100A76044AB09AA0AA90B90002074FF1200AF |
| | | :1004B100D48034AB09AA0AA90B90001DE475F001A0 |
| | | :1004C10012017390001D12013BD3940AE5F09400D0 |
| | | :1004D1004015AB09AA0AA90B900020741412011946 |
| | | :1004E10090001FE4120119AB09AA0AA90B9000019F |
| | | :1004F1001200A7D39400500302057A9000047401FE |
| | | :100501001200D49000011200A7FF9000041200A76E |
| | | :10051100D39F400EAB09AA0AA90B900004740112E3 |
| | | :100521000119AB09AA0AA90B900017E412011912CB |
| | | :10053100058A8045AB09AA0AA90B90001BE475F056 |
| | | :100541000112017390001B12013BD394C8E5F09492 |
| | | :10055100004010AB09AA0AA90B9000207464120193 |
| | | :10056100198016AB09AA0AA90B9000201200A760F6 |
| | | :100571000890002074FF1200D4AB09AA0AA90B90BD |
| | | :090581000021E475F00102017390 |
| | | :09000E008B098A0A890B8D0C2272 |
| | | :01001A0022C3 |
| | | :10064C0002074FE493A3F8E493A34003F68001F26E |
| | | :10065C0008DFF48029E493A3F85407240CC8C333AF |
| | | :10066C00C4540F4420C8834004F456800146F6DF7E |
| | | :10067C00E4800B01020408102040809008BDE47E49 |
| | | :10068C00019360BCA3FF543F30E509541FFEE49373 |
| | | :10069C00A360010ECF54C025E060A840B8E493A33A |
| | | :1006AC00FAE493A3F8E493A3C8C582C8CAC583CA65 |
| | | :1006BC00F0A3C8C582C8CAC583CADFE9DEE780BE1D |
| | | :0108CD00002A |
| | | :10008E00BB010689828A83E0225002E722BBFE0270 |
| | | :09009E00E32289828A83E49322A3 |
| | | :1000A700BB010CE58229F582E5833AF583E022500E |
| | | :1000B70006E92582F8E622BBFE06E92582F8E22258 |
| | | :0D00C700E58229F582E5833AF583E4932272 |
| | | :1000D400BB010FF8E58229F582E5833AF583E02830 |
| | | :1000E400F0225009C58229F8E58226F622BBFE09D2 |
| | | :1000F400C58229F8E22582F222F8EA2583F583E90C |
| | | :030104009328221B |
| | | :10010700BB010689828A83F0225002F722BBFE01D7 |
| | | :02011700F322D1 |
| | | :10011900F8BB010DE58229F582E5833AF583E8F01C |
| | | :10012900225006E92582C8F622BBFE05E92582C8C8 |
| | | :02013900F222B0 |
| | | :10013B00BB0110E58229F582E5833AF583E0F5F002 |
| | | :10014B00A3E0225009E92582F886F008E622BBFEDF |
| | | :10015B000AE92582F8E2F5F008E222E5832AF58325 |
| | | :08016B00E993F5F0A3E99322EA |
| | | :10017300BB010DC58229C582C5833AC58302027CB2 |
| | | :100183005011C58229F808E5F026F618F5F0E58246 |
| | | :1001930036F622BBFE11C58229F808E225F0F5F0F8 |
| | | :1001A300F218E23582F222F8E58229F582E5832A04 |
| | | :0D01B300F58374019325F0F5F0E4933822F4 |
| | | :1001C000F8BB0111E58229F582E5833AF583E8F071 |
| | | :1001D000E5F0A3F0225009E92582C8F608A6F0222E |
| | | :0D01E000BBFE09E92582C8F2E5F008F22215 |
| | | :1001ED00BB010DE58229F582E5833AF5830202A470 |
| | | :1001FD005007E92582F8020292BBFE07E92582F835 |
| | | :10020D000202B6E58229F582E5833AF5830202C83A |
| | | :10021D00BB0120E58229F582E5833AF583D0F0D044 |
| | | :10022D00E0F8D0E0F9D0E0FAD0E0FBE8C0E0C0F0B3 |
| | | :10023D000202AD5018E92582F8D083D082D0E0F9C2 |
| | | :10024D00D0E0FAD0E0FBC082C08302029BBBFE1857 |
| | | :10025D00E92582F8D083D082D0E0F9D0E0FAD0E061 |
| | | :09026D00FBC082C0830202BF2223 |
| | | :060276008A838982E47313 |
| | | :10027C00C5F0F8A3E028F0C5F0F8E582158270020D |
| | | :06028C001583E038F022AA |
| | | :09029200E6FB08E6FA08E6F92291 |
| | | :09029B00EBF608EAF608E9F62288 |
| | | :0902A400E0FBA3E0FAA3E0F9225B |
| | | :0902AD00EBF0A3EAF0A3E9F02252 |
| | | :0902B600E2FB08E2FA08E2F92279 |
| | | :0902BF00EBF208EAF208E9F22270 |
| | | :0C02C800E493FB740193FA740293F92292 |
| | | :00000001FF |
| | |
| | | <FileType>5</FileType> |
| | | <FilePath>..\ComLib\Inc\stm32f0xx_it.h</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>SpiFlash.h</FileName> |
| | | <FileType>5</FileType> |
| | | <FilePath>..\ComLib\Inc\SpiFlash.h</FilePath> |
| | | </File> |
| | | </Files> |
| | | </Group> |
| | | <Group> |
| | |
| | | <FileName>stm32f0xx_it.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\ComLib\Src\stm32f0xx_it.c</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>SpiFlash.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\ComLib\Src\SpiFlash.c</FilePath> |
| | | </File> |
| | | </Files> |
| | | </Group> |
| | |
| | | <FileType>1</FileType> |
| | | <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_flash.c</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>stm32f0xx_ll_i2c.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_i2c.c</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>stm32f0xx_hal_spi.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_hal_spi.c</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>stm32f0xx_hal_spi_ex.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_hal_spi_ex.c</FilePath> |
| | | </File> |
| | | </Files> |
| | | </Group> |
| | | <Group> |
| | |
| | | #elif (BOARD_TYPE == 15) |
| | | #define DINPUT 16 |
| | | #define DOUTPUT 16 |
| | | #define EXDINPUT 8 |
| | | #define EXDOUPUT 8 |
| | | #elif (BOARD_TYPE == 16) |
| | | #define DINPUT 16 |
| | | #define DOUTPUT 16 |