当前位置: 技术问答>linux和unix
问 具体对ARM的I/O怎么控制?
来源: 互联网 发布时间:2016-05-27
本文导语: 目前在移植一个打印机驱动,到现在练电机都没发转起来,控制电机的步骤帮我分析下: 原驱动是先my_para.addr_base = (unsigned long)ioremap(ox13000000,1024)映射打印机的 物理地址,然后主要通过设备结构体my_para.current_out这...
目前在移植一个打印机驱动,到现在练电机都没发转起来,控制电机的步骤帮我分析下:
原驱动是先my_para.addr_base = (unsigned long)ioremap(ox13000000,1024)映射打印机的
物理地址,然后主要通过设备结构体my_para.current_out这个成员来控制步进电机(char类型
的),其8bit刚好对应上原理图上的IC 8个输出端,从而控制电机运转;
控制的代码:
*(unsigned char *)my_para.addr_base = my_para.current_out;
目前新的打印机,稍做了改动,添置了打印切刀,所以多了4个输出端口,分2个IC了
那么这个时候我到底该怎么改动current_out呢??
将其从char改为int?控制16位?但是怎么对应呢?
新手啊我,请大侠指教
原驱动是先my_para.addr_base = (unsigned long)ioremap(ox13000000,1024)映射打印机的
物理地址,然后主要通过设备结构体my_para.current_out这个成员来控制步进电机(char类型
的),其8bit刚好对应上原理图上的IC 8个输出端,从而控制电机运转;
控制的代码:
*(unsigned char *)my_para.addr_base = my_para.current_out;
目前新的打印机,稍做了改动,添置了打印切刀,所以多了4个输出端口,分2个IC了
那么这个时候我到底该怎么改动current_out呢??
将其从char改为int?控制16位?但是怎么对应呢?
新手啊我,请大侠指教
|
unsigned short current_out;
*(unsigned short *)my_para.addr_base = my_para.current_out;
如果新增4根控制线跟原来的8根控制线使用同一个端口,可以采用上面的方式。
*(unsigned short *)my_para.addr_base = my_para.current_out;
如果新增4根控制线跟原来的8根控制线使用同一个端口,可以采用上面的方式。