HC32L110+spi 调试SX1268

写在前面

尤其注意主要时钟源

Clk_SwitchTo(ClkXTH);

XTH为外部时钟,若板子无外部时钟,则无法下载了 。

这点尤其注意,更换芯片中。。。

1.官网下载例程

https://www.xhsc.com.cn/Productlist/info.aspx?itemid=1751

2.找到spi例程 开始暴改

改动1.

en_result_t Spi_SendData(uint8_t u8Data)
{
     uint32_t u32TimeOut;
    
     u32TimeOut = 1000;
     M0P_SPI->DATA = u8Data;
    
     while(u32TimeOut--)
     {
         if(TRUE == Spi_GetStatus(SpiIf))
         {
             break;
         }
     }
     if(u32TimeOut == 0)
     {
         return ErrorTimeout;
     }
     u8Data  =  M0P_SPI->DATA;
     return Ok;
}

改动为

en_result_t Spi_SendData(uint8_t u8Data)
{
     uint32_t u32TimeOut;
    
     u32TimeOut = 1000;
     M0P_SPI->DATA = u8Data;
    
     while(--u32TimeOut)
     {
         if(TRUE == Spi_GetStatus(SpiIf))
         {
             break;
         }
     }
     if(u32TimeOut == 0)
     {
         return ErrorTimeout;
     }
     u8Data  =  M0P_SPI->DATA;
     return Ok;
}

原来的(--u32TimeOut执行后会为0XFFFFFFF,后续条件判断不执行。

3,SPI配置 ,注意时钟源

Clk_SetPeripheralGate(ClkPeripheralSpi,TRUE); //SPI外设时钟打开

Gpio_SetFunc_SPI_CS_P02(); 
Gpio_SetFunc_SPIMISO_P35();
Gpio_SetFunc_SPIMOSI_P36();
Gpio_SetFunc_SPI_SCK_P01();//配置功能脚
  
  stc_spi_config_t  SPIConfig;
  Spi_SetCS(TRUE);
  //配置SPI
  SPIConfig.bCPHA = Spicphafirst;
  SPIConfig.bCPOL = Spicpollow;
  SPIConfig.bIrqEn = FALSE;
  SPIConfig.bMasterMode = SpiMaster;
  
  SPIConfig.u8BaudRate = SpiClkDiv2; //时钟
  SPIConfig.pfnIrqCb = NULL;
  Spi_Init(&SPIConfig); //初始化

4.对所有使用了的端口初始化

并配置相关函数

5.对SX1268进行初始化 注意电路采用不同时钟 配置不同

posted @ 2023-12-06 18:03  朽木生  阅读(187)  评论(0编辑  收藏  举报