搜索
bottom↓
回复: 12

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

[复制链接]

出0入0汤圆

发表于 2017-8-8 12:09:34 | 显示全部楼层 |阅读模式
本帖最后由 tiantang46800 于 2017-8-8 12:15 编辑

1、使用stm8s103驱动spi来控制ws2811的三色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,如何提高它的速度????????
          }
        }

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2017-8-8 14:56:54 | 显示全部楼层
第一次看到不测CLK而是测MOSI的

芯片的SPI最大几分频,主频多少,不都直接可以算么。
另外,这芯片记得是靠约定脉宽输出数据的吧,那么提高了时钟还能用?

出0入0汤圆

发表于 2017-8-8 16:35:55 | 显示全部楼层
用12M的晶振就可以了

出0入0汤圆

 楼主| 发表于 2017-8-8 22:32:39 | 显示全部楼层
wx85105157 发表于 2017-8-8 16:35
用12M的晶振就可以了

stm8 接一个12M晶振?

出0入0汤圆

发表于 2017-8-9 08:38:50 来自手机 | 显示全部楼层
循环里面不要调用库函数,直接读写寄存器试试

出0入0汤圆

发表于 2017-8-9 09:10:06 | 显示全部楼层
难道不是先看CLK?

出0入8汤圆

发表于 2017-8-9 09:53:15 | 显示全部楼层
请问 楼主 你发的是什么数据???

出0入0汤圆

发表于 2017-8-9 09:56:49 | 显示全部楼层
是的,实测用12M晶振能点亮。发送01110001B就能点。

出110入170汤圆

发表于 2017-8-9 09:58:57 来自手机 | 显示全部楼层
你必须要DMA,如果没有DMA,就用大BUF,估算好时间发送

出0入0汤圆

 楼主| 发表于 2017-8-9 11:31:48 | 显示全部楼层
kebaojun305 发表于 2017-8-9 09:53
请问 楼主 你发的是什么数据???

发送三色led的数据,一共24位rgb,,,每一位颜色使用一个8位MOSI发送。

出0入8汤圆

发表于 2017-8-9 11:36:41 | 显示全部楼层
确实  楼主的要求 只能用dma来提高spi的效率。

出0入0汤圆

发表于 2017-8-10 10:05:38 | 显示全部楼层
解决了吗?用IO口模拟可能更快

出0入0汤圆

 楼主| 发表于 2017-8-10 16:57:21 | 显示全部楼层
jingmeidz 发表于 2017-8-10 10:05
解决了吗?用IO口模拟可能更快

没有解决,使用pwm了,还在调试
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-22 07:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表