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,如何提高它的速度????????
          }
        }
12条回答
wx85105157
1楼 · 2019-12-27 18:01.采纳回答
是的,实测用12M晶振能点亮。发送01110001B就能点。
aozima
2楼-- · 2019-12-26 22:55
 精彩回答 2  元偷偷看……
wx85105157
3楼-- · 2019-12-27 01:49
用12M的晶振就可以了
tiantang46800
4楼-- · 2019-12-27 02:59
wx85105157 发表于 2017-8-8 16:35
用12M的晶振就可以了

stm8 接一个12M晶振?
eleqian
5楼-- · 2019-12-27 06:06
循环里面不要调用库函数,直接读写寄存器试试
huangqi412
6楼-- · 2019-12-27 06:40
难道不是先看CLK?
kebaojun305
7楼-- · 2019-12-27 12:10
 精彩回答 2  元偷偷看……

一周热门 更多>