打印
[STM32F1]

用IO口模拟读写时序操作8253,大神看一下是否可行

[复制链接]
1669|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ypldz23|  楼主 | 2015-5-14 16:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
硬件连接如下:
PB7~PB0=D7~D0
PB8=A0
PB9=A1
PB10=WR
PB11=RD
PB12=CS1
///////////////操作宏
#define 8254_PORT GPIOB
#define 8254_A0 GPIOB_Pin_8
#define 8254_A1 GPIOB_Pin_9
#define  8254_WR  GPIO_Pin_10
#define 8254_RD  GPIO_Pin_11
#define  8254_CS1  GPIO_Pin_12
#define  8254_CS2  GPIO_Pin_13
#define  Reset8254_RD   GPIO_ResetBits(8254_PORT, 8254_RD)
#define  Set8254_RD  GPIO_SetBits(8254_PORT,8254_RD)
#define  Reset8254_WR   GPIO_ResetBits(8254_PORT, 8254_WR)
#define  Set8254_WR  GPIO_SetBits(8254_PORT,8254_WR)
#define  Reset8254_CS1   GPIO_ResetBits(8254_PORT, 8254_CS1)
#define  Set8254_CS1  GPIO_SetBits(8254_PORT,8254_CS1)
#define  Reset8254_CS2   GPIO_ResetBits(8254_PORT, 8254_CS2)
#define  Set8254_CS2  GPIO_SetBits(8254_PORT,8254_CS2)
#define Set8254_A0  GPIO_SetBits(8254_PORT, 8254_A0)
#define Reset8254_A0  GPIO_ResetBits(8254_PORT, 8254_A0)
#define Set8254_A1  GPIO_SetBits(8254_PORT, 8254_A1)
#define Reset8254_A1 GPIO_ResetBits(8254_PORT,8254_A1)
//////////将0xb0写入控制寄存器
Set8254_CS1;
Set8254_A0;
Set8254_A1;//写控制寄存器
Reset8254_CS1;
GPIOB->ODR = GPIOB->ODR & 0xff00| 0xb0;//写0xb0
Reset8254_WR ;
Set8254_WR ;
Set8254_CS1
没有考虑延迟,大神看看这样做是否可行?


沙发
ypldz23|  楼主 | 2015-5-15 08:54 | 只看该作者
自己帮顶,大神快来

使用特权

评论回复
板凳
戈卫东| | 2015-5-15 09:11 | 只看该作者
什么年代了还用8253啊。。。。。。

使用特权

评论回复
地板
戈卫东| | 2015-5-15 09:16 | 只看该作者
可能需要插入延时满足时序

使用特权

评论回复
5
ypldz23|  楼主 | 2015-5-15 10:47 | 只看该作者
戈卫东 发表于 2015-5-15 09:11
什么年代了还用8253啊。。。。。。

大神可有其它方案,用于脉冲计数

使用特权

评论回复
6
ypldz23|  楼主 | 2015-5-15 10:48 | 只看该作者
戈卫东 发表于 2015-5-15 09:16
可能需要插入延时满足时序

谢谢,下周连硬件试试

使用特权

评论回复
7
ypldz23|  楼主 | 2015-6-9 10:39 | 只看该作者
终于调试成功啦!

使用特权

评论回复
8
blueangel_1| | 2016-1-24 22:23 | 只看该作者
您好,用fsmc能不能操作8253?

使用特权

评论回复
9
wahahaheihei| | 2016-1-25 13:16 | 只看该作者
搞逻辑分析仪试试,然后对比一下时序,如果是一致的,那就看时隙是否符合协议要求。

使用特权

评论回复
10
blueangel_1| | 2016-1-25 18:45 | 只看该作者
家里业余时间搞,只有个万用表,实在不行也试着拿IO模拟吧,关键我还在总线上加了电平转换芯片,需要切换方向

使用特权

评论回复
11
可可球| | 2016-1-25 19:43 | 只看该作者
终于调试成功啦!

怎么实现的,楼主分享一下啊,用的什么片子,内部定时器没有捕捉功能吗

使用特权

评论回复
12
blueangel_1| | 2016-1-25 23:30 | 只看该作者
同问楼主,我用8253主要是用它的gate信号暂停计数还能保持计数值的功能,gate恢复计数后它还可以接着原来的值继续走,这个做电机控制挺方便,好像stm32内部定时器没有这个功能吧?

使用特权

评论回复
13
ypldz23|  楼主 | 2016-3-11 16:13 | 只看该作者
blueangel_1 发表于 2016-1-24 22:23
您好,用fsmc能不能操作8253?

研究过,理论上应该可以,就是杀**用牛刀,就是FSMC配置出读写8051总线时序,后来感觉挺麻烦的还得现学,就直接用IO口模拟8253读写时序了

使用特权

评论回复
14
ypldz23|  楼主 | 2016-3-11 16:17 | 只看该作者
可可球 发表于 2016-1-25 19:43
怎么实现的,楼主分享一下啊,用的什么片子,内部定时器没有捕捉功能吗 ...

用的8253,IO口模拟时序,STM32用内部定时器也实现了,外部脉冲信号当作脉冲时钟信号输入到计数器内,好长时间了,有些忘了,如有需要请留邮箱吧

使用特权

评论回复
15
ypldz23|  楼主 | 2016-3-11 16:18 | 只看该作者
blueangel_1 发表于 2016-1-25 23:30
同问楼主,我用8253主要是用它的gate信号暂停计数还能保持计数值的功能,gate恢复计数后它还可以接着原来的 ...

用IO口模拟8253读写时序可以实现,内部计数器暂停这个功能没研究过啊,呵呵

使用特权

评论回复
16
zgljtzbd| | 2016-3-24 17:07 | 只看该作者
ypldz23 发表于 2016-3-11 16:17
用的8253,IO口模拟时序,STM32用内部定时器也实现了,外部脉冲信号当作脉冲时钟信号输入到计数器内,好 ...

楼主求求分享8253读写源码,邮箱1021568988@qq.com   搞三天了还是不成功

使用特权

评论回复
17
yangyuan_ing| | 2016-4-28 20:52 | 只看该作者
楼主,求分享I/O口模拟8253的读写程序,我最近也在弄这个。
求源程序,发邮箱:yangyuan_ing@163.com
万分感激~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

38

帖子

2

粉丝