5069|6

1291

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

Atmel SAM4E Xplained Pro之库和寄存器操作PIO [复制链接]

   今天我来分享下SAM4EPIO模块。这次我使用的编译环境是IAR,自己从AS 6.2的一个例程移植到IAR里,这是个带库的模板,里面有几个外设的驱动文件。还有这个模板方便在网上分享我自己写的源代码,这也是我自己建一个模板的初衷,因为官方的例程包很大,这是因为官方例程包里有针对多个芯片的例程,所以单个芯片的工程很难分离。所以我自己花了点时间自己建了一个带库的模板,这样大家就可以使用库或者寄存器的写法。
通常我们学习每种MCU时,基本上都会学他的的GPIO功能。这里我要引用一下别人的的总结了:SAM4E芯片的GPIO都由并行输入、输出控制器(PIOParallel Input/Output Controller)来管理(在数据手册第31章(558页)有对PIO介绍)。所有的IO口都有好多种不同的输入输出模式,比如:上拉、下拉、施密特触发器输入、多驱动(开漏)、滤波、去抖动、输入改变中断。SAM4E具有PIOAPIOBPIOCPIODPIOE三个PIO控制器。
下面就是PIO的框图:
还有PIO涉及的寄存器:
可以看出,PIO的寄存器很多,这也就验证了PIO强大的一个体现的很好证明。
用到了以下这两个函数:
pio_configure_pin(PIO_PD22_IDX,PIO_OUTPUT_1| PIO_DEFAULT);   
pio_toggle_pin(PIO_PD22_IDX);      
pio_configure_pin函数是设置管脚的类型以及状态。
例如pio_configure_pin(PIO_PD22_IDX,PIO_OUTPUT_1 | PIO_DEFAULT);  就是把PIOD22设置成输出,无上下拉。
pio_toggle_pin函数是翻转管脚电平的函数;
例如pio_toggle_pin(PIO_PD22_IDX);就是每执行pio_toggle_pin(PIO_PD22_IDX)这个函数就会把PIOD22脚的电平翻转;
现在我就来用库函数来点亮板子上的LED
我们的步骤是:
1)初始化时钟
2)使能PIO外设的时钟
3)设置PIO外设脚的类型
4)输出电平控制LED的亮灭。

下面的代码如下:
  1. int main(void)
  2. {
  3.             sysclk_init();                                                          //初始化时钟
  4.         arch_ioport_init();                                                     //使能PIO外设的时钟
  5.         pio_configure_pin(PIO_PD22_IDX,PIO_OUTPUT_1 | PIO_DEFAULT);            //设置PIOD22脚位输出,无上下拉
  6.         while(1)
  7.         {
  8.            pio_toggle_pin(PIO_PD22_IDX);                                       //翻转PIOD22脚的电平
  9.         }
  10. }
复制代码
上面用了Atmel的库函数点亮了Atmel SAM4E Xplained Pro上的小黄灯,现在我用寄存器点亮套件上的小黄灯。
这次用到3个寄存器即可,分别是:PIO_ODER,PIO_PERPIO_CODE

如下图手册的截图中看就可以直观看到这3个寄存器的作用:
PIO_PERPIO使能寄存器,对它写0没有影响,写1就是使能PIO外设,这个是只写寄存器,如下截图的说明:
PIO_ODEPIO输出使能寄存器,对他写0没有影响,写1就是使能PIO输出,同样也是只写寄存器,如手册的截图:
最后一个PIO_CODE是个清零输出数据寄存器,就是把PIO的输出为低电平,对他写0没有影响,写1就是使PIO输出低电平,同样也是只写寄存器,如手册的截图:
还有套件的LED0是接的是PIOD22脚,如原理图的截图:
所以PIOD22输出低电平即可使LED0亮了。

以下就是我写的代码:
  1. int main(void)
  2. {
  3.         
  4.             sysclk_init();                                                          //初始化时钟
  5.         
  6.         
  7.         REG_PIOD_PER |= (1<<22);            
  8.         REG_PIOD_OER |= (1<<22);

  9.          
  10.         while(1)
  11.         {
  12.                              
  13.                   REG_PIOD_CODR =1 << 22;  
  14.         }
  15. }
复制代码
小黄灯再次亮了起来
附上源代码:
PIO.rar (1.1 MB, 下载次数: 15)

PIO_Regster.rar (1.1 MB, 下载次数: 17)


最新回复

不错啊,可惜是sram,要是dram就太好了那个芯片好像还是bga的啊,原厂就是随意 不差钱啊   详情 回复 发表于 2015-1-7 14:33

赞赏

1

查看全部赞赏

点赞 关注
 

回复
举报

2144

帖子

3

TA的资源

五彩晶圆(中级)

沙发
 
这板子不错
是M4么,上面是ddr1吗

点评

是M4的,这是板子上的一些器件:32.768kHz 石英晶体振荡器12MHz石英晶体振荡器10/100 Mbps( IEEE 802.3) 自适应以太网接口CAN 2.01MB Flash2个 512K (8-bit) SRAMs2 Gb (8-bit) NAND Flash3 个Xplained Pro 扩展接头  详情 回复 发表于 2015-1-7 13:55
 
个人签名电工
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 
板子不错。

点评

谢谢支持,这个板子6层的,好高大上  详情 回复 发表于 2015-1-7 13:56
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

4
 
lyzhangxiang 发表于 2015-1-7 08:33
这板子不错
是M4么,上面是ddr1吗
是M4的,这是板子上的一些器件:
32.768kHz 石英晶体振荡器
12MHz石英晶体振荡器
10/100 Mbps( IEEE 802.3) 自适应以太网接口
CAN 2.0
1MB Flash
2 512K (8-bit) SRAMs
2 Gb (8-bit) NAND Flash
3 个Xplained Pro 扩展接头
Xplained Pro LCD 扩展接头




点评

不错啊,可惜是sram,要是dram就太好了那个芯片好像还是bga的啊,原厂就是随意 不差钱啊  详情 回复 发表于 2015-1-7 14:33
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

5
 
谢谢支持,这个板子6层的,好高大上



 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

6
 
强仔00001 发表于 2015-1-7 13:55
是M4的,这是板子上的一些器件:32.768kHz 石英晶体振荡器12MHz石英晶体振荡器10/100 Mbps( IEEE 802.3) 自适应以太网接口CAN 2.01MB Flash2个 512K (8-bit) SRAMs2 Gb (8-bit) NAND Flash3 个Xplained Pro 扩展接头Xplained Pro LCD 扩展接头


不错啊,可惜是sram,要是dram就太好了那个芯片好像还是bga的啊,原厂就是随意 不差钱啊


点评

就是豪  详情 回复 发表于 2015-1-7 14:48
 
个人签名电工
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

7
 
lyzhangxiang 发表于 2015-1-7 14:33
不错啊,可惜是sram,要是dram就太好了那个芯片好像还是bga的啊,原厂就是随意 不差钱啊

就是豪


 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表