4610|12

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

【Atmel SAM R21创意大赛周计划】+ GPU运行 [复制链接]

好吧,折腾了一下,基本上还比较顺利,GPU已经被驱动起来了,关于GPU相关的可以参考之前的帖子。



【Atmel SAM R21创意大赛周计划】+添加GPU



恩,驱动采用的SAM R21 Xplained Pro板子上面的EXT1扩展口中的SPI接口,SPI引脚等资源基本上在samr21_xplanined_pro.h文件中已经详细的定义了。


实际中做了一些HAL的分层处理,方便后期移植。



  1. /* Defines -------------------------------------------------------------------*/
  2. #define EXT1_SPI_MODULE_BAUDRATE                        5000000UL


  3. /* Macros --------------------------------------------------------------------*/
  4. #define GPIO_PIN_HIGH(GPIN)                             port_pin_set_output_level(GPIN, true)
  5. #define GPIO_PIN_LOWL(GPIN)                             port_pin_set_output_level(GPIN, false)

  6. #define EXT1_PIN5_HIGH()                                GPIO_PIN_HIGH(EXT1_PIN_5)
  7. #define EXT1_PIN5_LOWL()                                GPIO_PIN_LOWL(EXT1_PIN_5)
复制代码



初始化部分,采用库方式,比较简单




  1. /* Includes ------------------------------------------------------------------*/
  2. #include <asf.h>
  3. #include <FT800_HAL_Arch.h>


  4. /* Global Variables ----------------------------------------------------------*/
  5. struct spi_slave_inst EXT1_SPI_Slaver;
  6. struct spi_module     EXT1_SPI_Master;



  7. /* Global Functions ----------------------------------------------------------*/

  8. /**
  9. * @brief   EXT1_PIN5_INIT
  10. * @note    EXT1 PIn5初始化
  11. * @param   none
  12. * @retval  none
  13. */
  14. void EXT1_PIN5_INIT(void)
  15. {
  16.         struct port_config pin_conf;
  17.    
  18.     /* 配置PIN5作为输出 */
  19.         port_get_config_defaults(&pin_conf);
  20.         pin_conf.direction          = PORT_PIN_DIR_OUTPUT;
  21.         port_pin_set_config(EXT1_PIN_5, &pin_conf);
  22.         port_pin_set_output_level(EXT1_PIN_5, false);
  23. }

  24.    
  25. /**
  26. * @brief   EXT1_SPIS_INIT
  27. * @note    EXT1_SPI初始化
  28. * @param   none
  29. * @retval  none
  30. */
  31. void EXT1_SPIS_INIT(void)
  32. {
  33.     struct spi_config               Config_SPI_Master;
  34.     struct spi_slave_inst_config    Slaver_Dev_Config;
  35.    
  36.     /* 配置并初始化从外设软设备实例 */
  37.     spi_slave_inst_get_config_defaults(&Slaver_Dev_Config);
  38.     Slaver_Dev_Config.ss_pin                        = EXT1_PIN_SPI_SS_0;
  39.     spi_attach_slave(&EXT1_SPI_Slaver, &Slaver_Dev_Config);

  40.    
  41.     /* 配置/初始化/使能SERCOM外设为SPI模式 */
  42.     spi_get_config_defaults(&Config_SPI_Master);
  43.     Config_SPI_Master.mux_setting                   = EXT1_SPI_SERCOM_MUX_SETTING;
  44.     Config_SPI_Master.mode_specific.master.baudrate = EXT1_SPI_MODULE_BAUDRATE;
  45.     Config_SPI_Master.pinmux_pad0                   = EXT1_SPI_SERCOM_PINMUX_PAD0;
  46.     Config_SPI_Master.pinmux_pad1                   = PINMUX_UNUSED;
  47.     Config_SPI_Master.pinmux_pad2                   = EXT1_SPI_SERCOM_PINMUX_PAD2;
  48.     Config_SPI_Master.pinmux_pad3                   = EXT1_SPI_SERCOM_PINMUX_PAD3;
  49.     spi_init(&EXT1_SPI_Master, EXT1_SPI_MODULE, &Config_SPI_Master);
  50.    
  51.     spi_enable(&EXT1_SPI_Master);
  52. }

  53. /**
  54. * @brief   EXT1_SPI_NSS_HIGH
  55. * @note    EXT1_SPI 片选高
  56. * @param   none
  57. * @retval  none
  58. */
  59. void EXT1_SPI_NSS_HIGH(void)                    
  60. {
  61.     spi_select_slave(&EXT1_SPI_Master, &EXT1_SPI_Slaver, false);
  62. }

  63. /**
  64. * @brief   EXT1_SPI_NSS_LOWL
  65. * @note    EXT1_SPI片选低
  66. * @param   none
  67. * @retval  none
  68. */
  69. void EXT1_SPI_NSS_LOWL(void)                     
  70. {
  71.     spi_select_slave(&EXT1_SPI_Master, &EXT1_SPI_Slaver, true);  
  72. }


  73. /**
  74. * @brief   EXT1_SPI_WRITE
  75. * @note    EXT1_SPI写操作
  76. * @param   none
  77. * @retval  none
  78. */
  79. uint8_t EXT1_SPI_WRITE(uint8_t *buff, uint8_t len)
  80. {
  81.     spi_write_buffer_wait(&EXT1_SPI_Master, buff, len);
  82.     return len;
  83. }


  84. /**
  85. * @brief   EXT1_SPI_READD
  86. * @note    EXT1_SPI读操作
  87. * @param   none
  88. * @retval  none
  89. */
  90. uint8_t EXT1_SPI_READD(uint8_t *buff, uint8_t len)
  91. {
  92.     spi_read_buffer_wait(&EXT1_SPI_Master, buff, len, 8);
  93.     return len;
  94. }
复制代码



到此基本上就OK,哎,估计以后要失业,现在跑个demo太快了,社会有些浮躁啊,不过atmel的库还是很不错的,设计者很用心,认识到位。



然后基本上就是HAL层对应GPU层的一些宏了。

  1. /* ---------------------------------------------------------------------------*/
  2. /* ---------------------------------------------------------------------------*/
  3. #define FT800_SPI_INIT()                        EXT1_SPIS_INIT()
  4. #define FT800_FDI_INIT()                        EXT1_PIN5_INIT()

  5. #define FT800_SPI_READD(buf, len)               EXT1_SPI_READD(buf, len)
  6. #define FT800_SPI_WRITE(buf, len)               EXT1_SPI_WRITE(buf, len)

  7. #define SET_FT800_CS_PIN_LOWL()                 EXT1_SPI_NSS_LOWL()            
  8. #define SET_FT800_CS_PIN_HIGH()                 EXT1_SPI_NSS_HIGH()         

  9. #define SET_FT800_PD_PIN_LOWL()                 EXT1_PIN5_LOWL()
  10. #define SET_FT800_PD_PIN_HIGH()                 EXT1_PIN5_HIGH()
复制代码



恩,发一些运行的图片吧,视频后面补上,不太好拍,晚上光线不好,手机像素垃圾。。。



恩,主要做了两个东西一个魔方三维的,用于展示openGL的特性,另外一个是ECG,测心率的,数据是模拟的,仅仅用于演示。































      



        



      



恩,主要做了两个东西一个魔方三维的,用于展示openGL的特性,另外一个是ECG,测心率的,数据是模拟的,仅仅用于演示。



后面结合R21板子做实际的应用,还没开始搞呢。。


IMAG0652.jpg (957.62 KB, 下载次数: 0)

IMAG0652.jpg

最新回复

那个是什么屏?  详情 回复 发表于 2016-11-10 10:38
点赞 关注(1)
个人签名电工
 

回复
举报

2144

帖子

3

TA的资源

五彩晶圆(中级)

沙发
 
简单的GPU操作流程



  1. /**
  2. * brief  Gpu_App_Line
  3. * note   GPU应用线
  4. * param  None
  5. * retval None
  6. */
  7. FTVOID Gpu_App_Line (FTU32 * para)
  8. {
  9.         /* DL显示开始 */
  10.         HAL_CmdBufIn(CMD_DLSTART);
  11.         HAL_CmdBufIn(CLEAR_COLOR_RGB(0, 0, 0));
  12.         HAL_CmdBufIn(CLEAR(1, 1, 1));

  13.         /* 线条加载显示 */
  14.         HAL_CmdBufIn( BEGIN(LINES) );
  15.         HAL_CmdBufIn( CLEAR_COLOR_RGB(255, 255, 255) );
  16.         HAL_CmdBufIn( COLOR_RGB(255, 0, 0) );
  17.         HAL_CmdBufIn( LINE_WIDTH(4) );
  18.         HAL_CmdBufIn( VERTEX2F(319*FT800_PIXEL_UNIT, 199*FT800_PIXEL_UNIT) );
  19.         HAL_CmdBufIn( VERTEX2F(  1*FT800_PIXEL_UNIT, 199*FT800_PIXEL_UNIT) );
  20.    
  21.         HAL_CmdBufIn( END() );

  22.         /* DL显示结束 */
  23.         HAL_CmdBufIn( DISPLAY() );
  24.         HAL_CmdBufIn( CMD_SWAP );
  25.         HAL_BufToReg( RAM_CMD, 0 );

  26. }
复制代码



熟悉显卡的朋友应该不太陌生,还有很多指令,这里仅仅是最简单的划线。


 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

板凳
 
用心的朋友估计能看出那个ECG例子中alpha通道的使用,算是图层的一些应用吧,一般的那种屏需要不少的数学处理才能有这种显示效果,不过一般高端处理器自带的GPU都是支持alpha通道,2D/3D,渲染等等效果的。

STM32F429的板子是支持alpha通道的。
 
个人签名电工
 
 

回复

3414

帖子

0

TA的资源

纯净的硅(高级)

4
 
这块GPU的功耗和发热量怎么样,要散热吗?

点评

不需要哦,基本上功耗也是很低的了 [attachimg]190276[/attachimg]  详情 回复 发表于 2015-3-6 22:30
 
个人签名

So TM what......?

 

 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

5
 
ljj3166 发表于 2015-3-6 22:04
这块GPU的功耗和发热量怎么样,要散热吗?
不需要哦,基本上功耗也是很低的了







 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

6
 
下午无聊,写了个log打印的函数,这下打印网络参数,可以脱机了
 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

7
 

一些改变,web简约化




GPU调试命令行









大晚上的光线太差了。。
 
个人签名电工
 
 

回复

2886

帖子

0

TA的资源

五彩晶圆(初级)

8
 
感谢分享,这板子很强大啊

点评

是啊,atmel家的东西一直都很不错。802.15.4的radio芯片性能相当强。 官方的库也不错,搞搞demo很快啊。。  详情 回复 发表于 2015-3-7 22:01
 
个人签名昵称:灰小子
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

9
 
exiao 发表于 2015-3-7 21:59
感谢分享,这板子很强大啊

是啊,atmel家的东西一直都很不错。802.15.4的radio芯片性能相当强。
官方的库也不错,搞搞demo很快啊。。



点评

802.15.4是zigbee吧?atmel的ic还是很不错的,新ic出来的也快  详情 回复 发表于 2015-3-7 22:04
 
个人签名电工
 
 

回复

2886

帖子

0

TA的资源

五彩晶圆(初级)

10
 
lyzhangxiang 发表于 2015-3-7 22:01
是啊,atmel家的东西一直都很不错。802.15.4的radio芯片性能相当强。
官方的库也不错,搞搞demo很快啊。。

802.15.4是zigbee吧?atmel的ic还是很不错的,新ic出来的也快

点评

恩是啊 ,现在IC出来的速度太快了,今天看到坛子里面有人分享了Atmel M7的开发板。。。 太快了,吓到了。。 SAMR21G18A = SAMD21(M0内核) + AT86RF233(zigbee芯片)  详情 回复 发表于 2015-3-7 22:06
 
个人签名昵称:灰小子
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

11
 
exiao 发表于 2015-3-7 22:04
802.15.4是zigbee吧?atmel的ic还是很不错的,新ic出来的也快

恩是啊 ,现在IC出来的速度太快了,今天看到坛子里面有人分享了Atmel M7的开发板。。。
太快了,吓到了。。


SAMR21G18A = SAMD21(M0内核) + AT86RF233(zigbee芯片)




 
个人签名电工
 
 

回复

25

帖子

0

TA的资源

一粒金砂(初级)

12
 
那个是什么屏?

点评

RGB接口的屏 随便找个都可以 注意针对具体的屏triming一下时序  详情 回复 发表于 2016-11-11 09:39
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

13
 
mypear 发表于 2016-11-10 10:38
那个是什么屏?

RGB接口的屏
随便找个都可以
注意针对具体的屏triming一下时序
 
个人签名电工
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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