亚洲第一AV五码免费一区_av热久久_边勾边做1V1H顾慕琛_超碰77_日本乱人伦aⅴ精品潮喷_污片在线观看视频

上海四宏電機有限公司主營產品:低壓伺服電機、交流伺服電機、步進電機、無刷電機以及配套驅動器。
南方大區: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
關閉
主站蜘蛛池模板: 日本私人网站在线观看 | 91在线影院| 日韩欧美| 无遮挡十八禁污污网站免费 | 精品久久久久久久久久软件 | 中文字幕久久精品波多野结百度 | 亚洲精品热 | 午夜嘿嘿嘿 | 老牛无码人妻精品1国产 | 日本一区二区三区免费A片 欧美亚州综合 | 欧美精品理论片大全 | 日产乱码一二三区别免费麻豆 | 桃子视频在线播放WWW | 亚洲精品深夜AV无码一区二区 | 黄色网络在线观看 | 精品日本久久 | 爆乳女仆高潮在线观看 | 国产在线第一 | 美女又大又黄www免费网站 | 欧美久草| 丝袜a∨在线一区二区三区不卡 | 男人的天堂AV网站 | 亚洲欧美成人A∨在线观看 蝌蚪成人网 | 91精品天堂 | 日日骚一区二区三区 | 亚洲精品无码成人A片蜜臀 国产精品久久丫 | 久久精品国产精品亚洲色婷婷 | 成年人免费视频网站 | 久久国产精品99精国产 | 久久SE精品一区精品二区国产 | 全黄激性性视频 | 成人国产二区 | 少妇高潮无遮挡毛片免费播放 | 欧美日韩亚洲视频 | 久久精品国产亚洲AV麻豆 | 人人爽久久涩噜噜噜丁香 | xxxx中国一级片 | 5252aⅴ爱我愿haose016色 | 久久麻豆| 黄色片一级毛片 | 国产中文字幕视频 |