龙芯俱乐部开源技术社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5710|回复: 2

关于智龙开发板的PWM驱动For RT-Thread

[复制链接]

19

主题

79

帖子

3533

积分

论坛元老

Rank: 8Rank: 8

积分
3533
发表于 2015-7-13 19:36:18 | 显示全部楼层 |阅读模式
本帖最后由 chinesebear 于 2015-9-14 20:56 编辑

教程for smart loong:http://pan.baidu.com/s/1bnyQa8B
龙芯智龙开发板教程rtt for smart loong:链接

关于智龙开发板的PWM驱动For RT-Thread
PWM driver for RTT on Smart Loong Board
By chinesebear(swubear@163.com)

由于没有示波器,智能通过万用测电压的方式来检测PWM驱动的正确性。
Step1硬件连接。
Loongson 1C一共有四个PWM,其中PWM0PWM1可以直接使用,PWM2PWM3需要复用其它脚。万用表的表笔用鳄鱼夹夹在PWM0的输出。
通过下图可以查到PWM0的位置:下一排插座的序号17处(看引脚说明)。



step2 驱动软件。
为了适应RT-ThreadIO驱动管理的机制,龙芯的四个PWM的驱动都注册到了IO驱动管理层。为了调试方便,我在finsh中添加了pwm_control(pwm, HRC, LRC)命令。通过“FINSH_FUNCTION_EXPORT()”将“pwm_control()”添加到RTTshell中。
int pwm_control(rt_uint32_t pwm_num, rt_uint32_t HRC_value, rt_uint32_t LRC_value)
{

        char* pwm_str[4] ={"pwm0","pwm1","pwm2","pwm3"};
        rt_uint32_t pwm_buffer[2]={HRC_value,LRC_value};
        rt_uint32_t pwm_base = 0;
        rt_uint32_t *base_ptr = RT_NULL;
        //rt_kprintf("pwm device = %s \n",pwm_str[pwm_num]);
        rt_device_t  pwm_dev=rt_device_find(pwm_str[pwm_num]);
        if (pwm_dev == RT_NULL)
        {
                rt_kprintf("Don't find pwm device:%s \n", pwm_str[pwm_num]);
                return RT_NULL;
        }else{
                rt_kprintf("Find pwm device:%s \n", pwm_str[pwm_num]);
        }
        base_ptr = (rt_uint32_t *)(pwm_dev->user_data);
        pwm_base = *base_ptr;
        rt_kprintf("pwm device base addr = 0x%8X \n", pwm_base);
        rt_device_open(pwm_dev,RT_DEVICE_FLAG_RDWR);
        rt_kprintf("Open pwm device completed \n");

        rt_device_control(pwm_dev,PWM_SET_HRC, &pwm_buffer[0]);
        rt_device_control(pwm_dev,PWM_SET_LRC,  &pwm_buffer[1]);
        rt_kprintf("Set HRC= %d, LRC= %d \n", HRC_value,LRC_value);
        return RT_EOK;        
}
FINSH_FUNCTION_EXPORT(pwm_control, pwm control(PWM,HRC,LRC));
Step3 测试结果
从下图可以看出,在脉冲占空比不断增加的同时,PWM输出电压也线性增大,这可以说明PWM的驱动是正确的。
Step4 总结
智龙主板的驱动会逐步健全。由于智龙开发板是为工控、物联网等硬实时要求比较高场合而设计,所以我将会为RT-Thread移植更多的驱动和程序。下一个添加的驱动是GPIO。希望通过我所做的事情能够激发大家开发龙芯的热情。诸君共勉!
附件RTT的elf文件:

本帖子中包含更多资源

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

x

84

主题

465

帖子

44万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
440441
发表于 2015-7-13 21:38:09 | 显示全部楼层
非常好啊,看来RT-Thread在龙芯上的应用会越来越多了。

34

主题

108

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
16630
发表于 2015-7-16 01:28:56 | 显示全部楼层
硬件和软件会相互促进,过段时间有空了也研究研究RT-Thread。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|龙芯俱乐部开源技术社区

GMT+8, 2024-4-27 05:40 , Processed in 0.197950 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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