stm8s的SPI的时钟设置为8M,MOSI如何调整频率(目前为200K)

2019-12-26 18:51发布

本帖最后由 tiantang46800 于 2017-8-8 12:15 编辑

1、使用stm8s103驱动spi来控制ws2811的三 {MOD}led灯
2、代码调节了spi的时钟 为8M,示波器测试了
3、MOSI发送的频率只能调节到200K,每次发送8位数据,按照计算8M/8位=1M的频率吧,,还是哪里设置错了?如何提高


void spi_master_initialize(SPI_BaudRatePrescaler_TypeDef SPI_BaudRatePrescaler_X)
{
        /* Enable SPI clock */
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI,ENABLE);

        /* Set the MOSI,MISO and SCK at high level */
        GPIO_ExternalPullUpConfig(GPIOC, (GPIO_Pin_TypeDef)(GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7), ENABLE);

        /* Initialize SPI mode master 0 */
        SPI_Init( SPI_FIRSTBIT_MSB,
                        SPI_BaudRatePrescaler_X,
                        SPI_MODE_MASTER,
                        SPI_CLOCKPOLARITY_LOW,
                        SPI_CLOCKPHASE_1EDGE,
                        SPI_DATADIRECTION_1LINE_TX,
                        SPI_NSS_SOFT, 0x07);

        /* SD_SPI enable */
        SPI_Cmd( ENABLE);
}
以下是main函数:
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
spi_master_initialize(SPI_BAUDRATEPRESCALER_2); //上面2行配置完成后spi的clk是8M   
        for(jj=0;jj<8;jj++)
        {
          for(j=0;j<24;j++)
          {
            
             while((!SPI_GetFlagStatus(SPI_FLAG_TXE))&& (--time_out));
              if(!time_out) return ;
              SPI_SendData(0xf);//MOSI接ws2811的DI脚,示波器测试发送速度为200k,如何提高它的速度????????
          }
        }