本帖最后由 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,如何提高它的速度????????
}
}
发送三 {MOD}led的数据,一共24位rgb,,,每一位颜 {MOD}使用一个8位MOSI发送。
一周热门 更多>