少妇精品一区二区_91人成亚洲高清在线观看_欧美午夜精品久久久_婷婷一级片_亚洲国产精品推荐_狠狠干综合

上海四宏電機有限公司主營產品:低壓伺服電機、交流伺服電機、步進電機、無刷電機以及配套驅動器。
南方大區:13482896782
北方大區:18017377875
廣東大區:13061929082
 
新聞資訊
常見問題行業資訊公司新聞
聯系我們
電話:021-59751541
郵箱:jina@sihengmotor.com
傳真:021-59754896
地址:上海市青浦區崧春路399弄8號
你現在所在的位置:網站首頁 > 新聞資訊 > 步進電機驅動程序設計

步進電機驅動程序設計

信息來源:步進電機供應商上海四宏電機有限公司    添加時間:2018-03-16

由于步進電機用到了I/O端口,而在ARM9中操縱端口要用虛擬地址而非實際的物理地址,所以要修改內核代碼。

修改文件內核源代碼中間的smdk.c,在結構體

static struct map_desc smdk_io_desc] __initdata = {

{ vCS8900_BASE, pCS8900_BASE, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 },

{ vCF_MEM_BASE, pCF_MEM_BASE, 0x01000000, DOMAIN_IO, 0, 1, 0, 0 },

{ vCF_IO_BASE, pCF_IO_BASE, 0x01000000, DOMAIN_IO, 0, 1, 0, 0 },

LAST_DESC

};

中添加一行數組元素{ 0xd3000000, 0x28000000, 0x01000000, DOMAIN_IO, 0, 1, 0, 0 },則步進電機的物理地址0x28000006對應的虛擬地址為0xd3000006,在驅動程序中應對這個地址進行操縱。

定義全局變量num和status用來控制步進電機的速度和方向:

static int num=1;

static enum{off,clockwise,anticlockwise} status=off;

定義步進電機的整步模式正轉脈沖表:

unsigned char pulse_table[] =

{

0x05, 0x09, 0x0a, 0x06,

};

定義時鐘節拍函數time_tick()

static void time_tick(unsigned long data)

{

static int i=0;

switch(status)

{

case off: break;

case clockwise:

if(++i==num){

i=0;

if( row == 4 ) row = 0;

(*(char *)0xd3000006)=pulse_table[row++];

}

ttimer.expires=jiffies+1;

add_timer(&ttimer);

break;

case anticlockwise:

if(++i==num){

i=0;

if( row == -1 ) row = 3;

(*(char *)0xd3000006)=pulse_table[row--];

}

ttimer.expires=jiffies+1;

add_timer(&ttimer);

break;

case default: break;

}

}

在time_tick()函數中判定步進電機的狀態,是停止、正轉還是反轉。若是正轉,則按正向順序發送脈沖,并添加定時器ttimer;若是反轉,則按反向順序發送脈沖,并添加定時器ttimer;若是停止則不再發送脈沖,也不再添加定時器。

在stepper_module_init()函數中申請I/O端口,并初始化定時器ttimer:

if(check_region(0x28000006, 1)) //看該I/O端口是否已經被占用

{

printk("The stepper port is used by another module.\n");

return -1;

}

request_region(0x28000006, 1, DEVICE_NAME); //申請該I/O端口

init_timer(&ttimer); //初始化定時器ttimer

ttimer.function=time_tick; //填寫定時器處理函數為time_tick()

編寫ioctl函數用來接收應用程序對于步進電機的控制。

int device_ioctl( struct inode *inode, struct file *file, unsigned int ioctl_num,

unsigned long ioctl_param)

{

struct stepper * s;

/* 根據實際程序中的不同需求更改ioctl函數的調用*/

switch (ioctl_num)

{

case IOCTL_SET_MSG:

s = (struct stepper*) ioctl_param;

switch (s->CmdID)

{

case 0: /*開始*/

status=clockwise;

ttimer.expires=jiffies+1; //開啟定時器

add_timer(&ttimer);

break;

case 1: status=off; break; /*停止*/

case 2: /*反轉*/

if(status==clockwise){ status=anticlockwise; }

if(status==anticlockwise){ status=clockwise; }

break;

case 3: if(num!=1)num--; break; /*加速*/

case 4: num++; break; /*減速*/

}

}

return 0;

};

通過s指針得到stepper結構中的表示命令類型的參數,根據該參數判定命令類型,0是start起動,1是stop停止,2是reverse反向,3是up電機加速,4是down電機減速,通過改變全局變量num和status來控制電機。電機的起動是通過在start分支中起動一個定時器ttimer,然后在定時器處理函數time_tick中發送步進電機脈沖,并重新添加定時器,從而實現步進電機的轉動。


上海四宏電機有限公司主營產品:步進電機、無刷電機、伺服電機、步進電機驅動器、剎車電機、直線電機等各類型號的步進電機,歡迎來電咨詢。電話:021-59751541
上海四宏電機有限公司熱銷產品推薦
步進電機相關行業資訊
1、巧修步進電機低速時振動和噪聲
2、單相步進電機的轉動原理
3、平板式直線電機的分類
4、用戶要在步進電機的維修方面注意的兩個重點
5、啟動前要如此檢查步進電機的結構
6、步進電機之步進發電機出現過熱現象的原因以及解決方法
7、步進電機如何保證產品質量受到肯定
8、選購步進電機的主要依據
9、如何進行步進電機的維護
10、解決步進系統干擾問題的方法
11、步進電機全閉式環控制
12、模型無刷與有刷電機性能比較
13、奧文電機搶占電動工具產業“制高點”
14、步進步進電機:關于步進步進電機的相關特點分析
15、步進步進電機專題之步進電機的構造和作用
關于我們
? 公司簡介
? 組織架構
? 企業文化
? 人才招聘
產品中心
? 伺服電機
? 步進電機
? 步進電機驅動器
? 直流電機
? 減速器
? 控制系統
下載中心
? 伺服電機驅動器
? 其它資料下載
? 驅動器系列
? 步進電機系列
? 伺服電機系列
? 無刷電機系列
新聞資訊
? 常見問題
? 行業資訊
? 公司新聞
CONTACT  聯系我們
電話:021-59751541
郵箱:jina@sihengmotor.com
地址:上海市青浦區崧春路399弄8號
上海四宏電機有限公司版權所有     ICP備案號:滬ICP備17052886號     公安部備案號:31011802003254
在線客服
無刷電機
步進電機
伺服電機
無刷驅動
伺服驅動
步進驅動
021-59751541
關閉
主站蜘蛛池模板: 国产成在线观看免费视频成本人 | 韩国三级大全久久网站 | 成人av中文解说水果派在线观看 | 日韩精品一区二区三区免费观看 | www.久久视频 | 日韩av有码在线 | 免费AV一区二区三区3ATV | 极品束缚调教一区二区网站 | 人妻aⅴ中文字幕 | 好男人资源在线观看视频 | 囯产精品久久久久久久久久妞妞 | 999国产精品 | 一性一交一伦一片A片庆乱码 | 无码免费久久国产 | 国产亚洲日韩A欧美在线人成 | 饕餮记在线观看 | 欧美日p视频 | a级国产乱理伦片在线观看 www在线免费 | 四川少妇BBB凸凸凸BBB | 91精品在线免费视频 | 亚洲第一天堂无码专区 | 最新国产の精品合集bt伙计 | 美女内射无套日韩免费播放 | 日本亚洲网站 | 亚洲手机av | 男人放进女人阳道动态图 | 不戴奶罩的教师水卜樱在线观看 | 黑人把女人弄到高潮a片 | 男人一级片 | 国产区一区二区三 | 国产黑色丝袜在线观看下 | 9久9久女女热精品视频在线观看 | 青草久久精品 | 夜夜狠狠干 | x88av入口av在线 | 青青操五月天 | 小黄文纯肉污到你湿 | 色噜噜狠狠色综合日日 | 在线观看黄 | 狠狠干狠狠操视频 | 成年人在线免费看的惊悚动作片 |