3586|4

1291

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

SAM4L Xplained Pro starter kit之硬件SPI刷TFT [复制链接]

本帖最后由 强仔00001 于 2014-12-24 01:12 编辑

这次用SAM4L硬件SPI刷了个屏幕显示。很是激动。主控使用SAM4L Xplained Pro starter kit套件实现。是基于Atmel官方的固件库实现的,自己建的模板,这样方便源代码共享到网上。主要用到这几个函数:
外设复用函数:
ioport_set_pin_mode(xxx, xxx);
ioport_disable_pin(xxx);   
端口模式设置函数:
ioport_set_pin_dir(xxx, xxx);
ioport_set_pin_mode(xxx, xxx);
电平状态设置函数:
arch_ioport_set_pin_level(xxx,x )
现在我来简单说说这几个函数的用途和用法吧:
ioport_set_pin_mode(xxx, xxx); 这个函数是管脚功能选择函数:
例如:把PORTC30脚设为SPISCK时钟脚,可以这样写:
ioport_set_pin_mode(PIN_PC30B_SPI_SCK,MUX_PC30B_SPI_SCK);
ioport_disable_pin(xxx);这个函数是复用功能使能函数,记住一定加上这句话,这样复用功能的外设才能工作。例如把PORTC30脚设为SPISCK时钟脚功能打开,可以这样写:
ioport_disable_pin(PIN_PC30B_SPI_SCK);
ioport_set_pin_dir(xxx, xxx);这个函数是管脚的方向设置函数,例如把PORTC08脚设为输出可以这样写:
ioport_set_pin_dir(PIN_PC08,IOPORT_DIR_OUTPUT);
最后是管脚电平状态设置函数:arch_ioport_set_pin_level(xxx,x ) ,这个函数带两个参数输入的,例如把PORTC08的管脚设为低电平,写法如下:
arch_ioport_set_pin_level(PIN_PC08, 0 )
现在我来说说我函数的流程吧:
函数首先是进行sysclk_init()函数打开所有GPIO的时钟操作,这个跟STM32的芯片一个样的,要用到某些外设时,要打开相应的外设的时钟。
然后是设置串口,初始化TFT屏幕,然后用串口向电脑打印信息,最后就是一直刷新屏幕,显示我P的图标和我论坛的ID号:
主函数的代码如下:
  1. int main()
  2. {
  3.         sysclk_init();
  4.         arch_ioport_init();
  5.         ioport_set_pin_dir(PIN_PC07, IOPORT_DIR_OUTPUT);
  6.         ioport_set_pin_level(PIN_PC07, IOPORT_PIN_LEVEL_LOW);
  7.         
  8.         
  9.         ioport_set_pin_mode(PIN_PC26A_USART1_RXD, MUX_PC26A_USART1_RXD);
  10.         ioport_disable_pin(PIN_PC26A_USART1_RXD);
  11.         ioport_set_pin_mode(PIN_PC27A_USART1_TXD, MUX_PC27A_USART1_TXD);
  12.         ioport_disable_pin(PIN_PC27A_USART1_TXD);
  13.         
  14.         /*
  15.         //配置板子上的硬件SPI
  16.         ioport_set_pin_mode(PIN_PA21A_SPI_MISO, MUX_PA21A_SPI_MISO);//把PORTA21配置成MSIO
  17.         ioport_disable_pin(PIN_PA21A_SPI_MISO);                     //使能MSIO功能
  18.         ioport_set_pin_mode(PIN_PA22A_SPI_MOSI, MUX_PA22A_SPI_MOSI);//把PORTA22配置成MOSI
  19.         ioport_disable_pin(PIN_PA22A_SPI_MOSI);                      //使能MOSI功能
  20.         ioport_set_pin_mode(PIN_PC30B_SPI_SCK, MUX_PC30B_SPI_SCK);   //把PORTB30配置成SCK
  21.         ioport_disable_pin(PIN_PC30B_SPI_SCK);                        //使能SCK功能
  22.    
  23.         ioport_set_pin_mode(PIN_PB11B_SPI_NPCS2,MUX_PB11B_SPI_NPCS2);//把PORTB11配置成CS
  24.         ioport_disable_pin(PIN_PB11B_SPI_NPCS2);                      //使能CS功能
  25.          
  26.         ioport_set_pin_dir(UG_2832HSWEG04_DATA_CMD_GPIO, IOPORT_DIR_OUTPUT);
  27.         ioport_set_pin_mode(UG_2832HSWEG04_DATA_CMD_GPIO, IOPORT_MODE_PULLUP);
  28.         ioport_set_pin_dir(UG_2832HSWEG04_RESET_GPIO, IOPORT_DIR_OUTPUT);
  29.         ioport_set_pin_mode(UG_2832HSWEG04_RESET_GPIO, IOPORT_MODE_PULLUP);
  30.         
  31.         configure_console();                                //配置串口
  32.         


  33.         ssd1306_init();                                     //初始化OLED

  34.         ssd1306_clear();                                    //清OLED
  35.         
  36.         ssd1306_set_page_address(0);                        //行地址
  37.         ssd1306_set_column_address(0);                    //列地址
  38.         
  39.         ssd1306_write_text("My ID is : qianzgai00001 !");//要显示的内容

  40.         ssd1306_set_page_address(2);

  41.         ssd1306_set_column_address(30);

  42.         ssd1306_write_text("----Thanks EEWORD !");
  43.         */

  44.         
  45.         configure_console();                                //配置串口
  46.         Lcd_Init();
  47.         printf("\r\n\r\n-- TFT试验 --\r\n");
  48.         printf("\r\n\r\n-- 强仔00001 --\r\n");
  49.         printf("\r\n\r\n-- 联系方式:963775289 --\r\n");
  50.         
  51.   while (1)
  52.   {
  53.       
  54.       
  55.       //usart_getchar(USART1,&data);
  56.       //usart_putchar(USART1,data);
  57.     showimage(gImage_eeborad);

  58.   }
  59.   
  60. }
复制代码
显示的效果图:
附上源代码:
TFT屏幕显示.zip (1.04 MB, 下载次数: 3, 售价: 1 分芯积分)

最新回复

TFT我在STM32上还没做成功过,FSMC还不是很熟悉,以前51的程序改了移植上去不成功,郁闷中  详情 回复 发表于 2014-12-30 14:50

赞赏

2

查看全部赞赏

点赞 关注
 

回复
举报

3836

帖子

19

TA的资源

纯净的硅(中级)

沙发
 
谢谢分享。

点评

谢谢支持  详情 回复 发表于 2014-12-24 13:36
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

板凳
 
谢谢支持
 
 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

4
 
TFT我在STM32上还没做成功过,FSMC还不是很熟悉,以前51的程序改了移植上去不成功,郁闷中

点评

SPI简单很多。我也想搞个带FSMC总线的STM32  详情 回复 发表于 2014-12-30 20:24
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

5
 
dj狂人 发表于 2014-12-30 14:50
TFT我在STM32上还没做成功过,FSMC还不是很熟悉,以前51的程序改了移植上去不成功,郁闷中
SPI简单很多。我也想搞个带FSMC总线的STM32
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表