搜索
bottom↓
回复: 24

求一份DRV8823驱动一个两相4线步进电机的源码

[复制链接]

出0入0汤圆

发表于 2017-5-5 09:59:18 | 显示全部楼层 |阅读模式
最近要用德州仪器的一款马达驱动芯片DRV8823,无奈新手一枚,绞尽脑汁搞不出来,望坛友帮助~~最好是keil的工程 ,stm32的板子。有30元感谢红包送上,谢谢!!!!

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

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

出0入0汤圆

发表于 2017-5-5 10:12:00 | 显示全部楼层
开个定时器。

出0入0汤圆

发表于 2017-5-5 10:16:56 | 显示全部楼层
STM32,PWM,就 可以了。
把电机驱动器脉冲IO接PWM上。
加上使能和方向,就可以了。

出0入0汤圆

 楼主| 发表于 2017-5-5 10:23:04 | 显示全部楼层
Excellence 发表于 2017-5-5 10:16
STM32,PWM,就 可以了。
把电机驱动器脉冲IO接PWM上。
加上使能和方向,就可以了。 ...

哥哥,这个8823是spi接口的驱动芯片呢,我按照指令写了  但是输出没有电压 很郁闷

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2017-5-5 10:25:37 | 显示全部楼层

老哥 ,这个不行啊  不是单纯的pwm  它有一个spi接口呢

出0入0汤圆

发表于 2017-5-5 11:10:11 | 显示全部楼层
RESET 和 SLEEP  这两个别搞错了

出0入0汤圆

发表于 2017-5-5 11:31:30 | 显示全部楼层
shen_lan 发表于 2017-5-5 10:23
哥哥,这个8823是spi接口的驱动芯片呢,我按照指令写了  但是输出没有电压 很郁闷 ...

还要设置命令SPI.

我买原子的驱动器,好像就是这个芯片。

出0入0汤圆

 楼主| 发表于 2017-5-5 11:50:10 | 显示全部楼层
Excellence 发表于 2017-5-5 11:31
还要设置命令SPI.

我买原子的驱动器,好像就是这个芯片。

老哥 你有相关源码么有???

出0入0汤圆

 楼主| 发表于 2017-5-5 11:51:40 | 显示全部楼层
stevenli 发表于 2017-5-5 11:10
RESET 和 SLEEP  这两个别搞错了

对的,这两个引脚很重要 但是我设置的应该木有问题的

出0入0汤圆

发表于 2017-5-8 08:18:01 | 显示全部楼层
shen_lan 发表于 2017-5-5 11:50
老哥 你有相关源码么有???

没,不好意思。。。。。

出0入0汤圆

 楼主| 发表于 2017-5-8 08:56:11 | 显示全部楼层
Excellence 发表于 2017-5-8 08:18
没,不好意思。。。。。


没关系的,我再自己摸索摸索

出0入0汤圆

发表于 2017-5-8 09:19:33 | 显示全部楼层
可以参考一下这个 http://www.docin.com/p-1375858974.html

出0入0汤圆

 楼主| 发表于 2017-5-8 17:21:08 | 显示全部楼层
waothom 发表于 2017-5-8 09:19
可以参考一下这个 http://www.docin.com/p-1375858974.html

这个我看过了 他用的是普通IO 没有用stm32 的spi接口  ,哎  。。。。。。。还是谢谢大哥了

出0入0汤圆

发表于 2017-5-8 17:35:25 | 显示全部楼层
shen_lan 发表于 2017-5-8 17:21
这个我看过了 他用的是普通IO 没有用stm32 的spi接口  ,哎  。。。。。。。还是谢谢大哥了 ...

其实你也可以直接使用STM32的普通IO口来模拟SPI通信,并不用执着于硬件SPI

出0入0汤圆

发表于 2017-5-8 17:37:43 | 显示全部楼层
shen_lan 发表于 2017-5-8 17:21
这个我看过了 他用的是普通IO 没有用stm32 的spi接口  ,哎  。。。。。。。还是谢谢大哥了 ...

如果你只是硬件的SPI没有调通的话,建议你把程序贴出来让大家给你看看你的程序哪里出现问题

出0入0汤圆

 楼主| 发表于 2017-5-9 09:07:56 | 显示全部楼层
enen,大哥 这儿就是spi初始化的部分了,我想着模式  应该是单线发送不知道对不对  还用到了spi3的NSS 引脚,不晓得肿么配置了。。。。望大哥解救

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2017-5-9 09:10:13 | 显示全部楼层
waothom 发表于 2017-5-8 17:37
如果你只是硬件的SPI没有调通的话,建议你把程序贴出来让大家给你看看你的程序哪里出现问题 ...

恩恩 ,是的可以普通IO可以模拟,但是这样好像对应的中断好像就不能用了。。。。项目里不止这一个模块 ,用IO模拟的话,后面的可能会比较麻烦,,,,,

出0入0汤圆

 楼主| 发表于 2017-5-9 09:28:19 | 显示全部楼层
waothom 发表于 2017-5-8 17:37
如果你只是硬件的SPI没有调通的话,建议你把程序贴出来让大家给你看看你的程序哪里出现问题 ...

大哥 ,这里是连接图了 有点乱  多多包涵~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2017-5-9 09:50:12 | 显示全部楼层
shen_lan 发表于 2017-5-9 09:28
大哥 ,这里是连接图了 有点乱  多多包涵~~

其中的stm32F103RCT6 的SPI3_MOSI引脚并并没有作为SPI3的MISO 的功能使用,而是作为DRV8823的RESET引脚用,,,,, 也就是说,DRV8823的SPI引脚只有  SCK,MOSI,NSS这三个,  spi的初始化要肿么配置呢

出0入0汤圆

发表于 2017-5-9 18:01:33 来自手机 | 显示全部楼层
自己折腾出来就会了

出0入0汤圆

发表于 2017-5-9 18:14:48 来自手机 | 显示全部楼层
看看原子或安福莱spi例程,

出0入0汤圆

发表于 2017-5-10 14:04:13 | 显示全部楼层
shen_lan 发表于 2017-5-9 09:50
其中的stm32F103RCT6 的SPI3_MOSI引脚并并没有作为SPI3的MISO 的功能使用,而是作为DRV8823的RESET引脚用 ...

    以下是SPI的配置过程,不过可能跟你的不太一样,可以参考一下

    GPIO_InitTypeDef gpio_init_struct;

    /* 配置 SCK */
    gpio_init_struct.GPIO_Pin = GPIO_Pin_5;
    gpio_init_struct.GPIO_Speed = GPIO_Speed_50MHz;
    gpio_init_struct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &gpio_init_struct);

    /* 配置 MOSI */
    gpio_init_struct.GPIO_Pin = GPIO_Pin_7;
    GPIO_Init(GPIOA, &gpio_init_struct);

    /* 配置 MISO */
    gpio_init_struct.GPIO_Pin = GPIO_Pin_6;
    gpio_init_struct.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
    GPIO_Init(GPIOA, &gpio_init_struct);

    /* 配置 FLASH CS */
    gpio_init_struct.GPIO_Pin = GPIO_Pin_4;
    gpio_init_struct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOC, &gpio_init_struct);
  /* 使能 SPI 时钟 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
    SPI_InitTypeDef  spi_init_struct;
    SPI_I2S_DeInit(SPI1);

    /* 配置 SPI 参数 */
    /* 两线全双工模式 */
    spi_init_struct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
    /* 配置为主模式 */
    spi_init_struct.SPI_Mode = SPI_Mode_Master;
    /* 数据传输大小为 8 比特 */
    spi_init_struct.SPI_DataSize = SPI_DataSize_8b;
    /* 工作在模式 0 */
    spi_init_struct.SPI_CPOL = SPI_CPOL_Low;
    spi_init_struct.SPI_CPHA = SPI_CPHA_1Edge;
    /* 软件控制 CS 脚 */
    spi_init_struct.SPI_NSS = SPI_NSS_Soft;
    /* 时钟为 sys_clock / 4 = 72MHz / 4 */
    spi_init_struct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
    /* 先传最高位 */
    spi_init_struct.SPI_FirstBit = SPI_FirstBit_MSB;
    spi_init_struct.SPI_CRCPolynomial = 7;
    SPI_Init(SPI1, &spi_init_struct);
   
    SPI_CalculateCRC(SPI1, DISABLE);
    SPI_Cmd(SPI1, ENABLE);

出0入0汤圆

 楼主| 发表于 2017-5-10 18:09:04 | 显示全部楼层
waothom 发表于 2017-5-10 14:04
以下是SPI的配置过程,不过可能跟你的不太一样,可以参考一下

    GPIO_InitTypeDef gpio_init_stru ...

是的双线全双工是这样配置的,但是那个drv8823 是一个单线发送的spi接口,也用到了nss,所以不知道肿么弄了 。。。。。。问题主要在我怎么根据这个DRV8823的接口来配置我stm32f103rct6的SPI的模式,关键就是这儿了,不会~~~

出0入0汤圆

 楼主| 发表于 2017-5-10 18:09:47 | 显示全部楼层
Excellence 发表于 2017-5-9 18:14
看看原子或安福莱spi例程,

恩恩 ,不过他们都是双线全双工的模式。。。。。

出0入0汤圆

 楼主| 发表于 2017-5-10 18:10:43 | 显示全部楼层
MDC012170 发表于 2017-5-9 18:01
自己折腾出来就会了

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

本版积分规则

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

GMT+8, 2024-5-15 03:19

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

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