zhai · 2022年11月20日 · 北京市

【聆思CSK6视觉AI套件评测】运行手写体识别并驱动spi LCD显示

官方暂时未开放模型编译器,先移植下TinyMAXI,跑下手写题识别并用LCD显示。

1.移植下TinyMAXI

image.png
将TinyMAXI的文件放入src目录下,并添加修改到cmaklists.txt文件中,6011a支持smid指令,可加速运行神经网络。

测试代码如下

TM_DBGT_INIT();
    TM_PRINTF("mnist demo\n");
    tm_mdl_t mdl;

    for(int i=0; i<28*28; i++){
        TM_PRINTF("%3d,", mnist_pic[i]);
        if(i%28==27)TM_PRINTF("\n");
    }

    tm_mat_t in_uint8 = {3,28,28,1, {(mtype_t*)mnist_pic}};
    tm_mat_t in = {3,28,28,1, {NULL}};
    tm_mat_t outs[1];
    tm_err_t res;
    tm_stat((tm_mdlbin_t*)mdl_data); 

    res = tm_load(&mdl, mdl_data, NULL, layer_cb, &in);
    if(res != TM_OK) {
        TM_PRINTF("tm model load err %d\n", res);
        return ;
    }

#if (TM_MDL_TYPE == TM_MDL_INT8) || (TM_MDL_TYPE == TM_MDL_INT16) 
    res = tm_preprocess(&mdl, TMPP_UINT2INT, &in_uint8, &in); 
#else
    res = tm_preprocess(&mdl, TMPP_UINT2FP01, &in_uint8, &in); 
#endif
    //TM_DBGT_START();
    res = tm_run(&mdl, &in, outs);
    //TM_DBGT("tm_run");
    if(res==TM_OK) parse_output(outs);  
    else TM_PRINTF("tm run error: %d\n", res);
    tm_unload(&mdl);  

串口输出结果如图
image.png

2.SPI LCD

首先prj.conf文件开启spi功能,设置CONFIG_SPI=y,然后,修改配置I/O口,6011a SPI1默认关闭,这里使用SPI0,如图管脚配置:
image.png

设备驱动代码如下:
spi速率可达到100M,非常快。

const struct device *dev0;
const struct device* dev1 ;
static struct spi_config spi_cfg = {
    .operation = SPI_WORD_SET(8)| SPI_OP_MODE_MASTER|SPI_TRANSFER_MSB|SPI_LINES_SINGLE,        //设置一次传输8BIT,以及当前SPI为主设备
    .slave = 0,                                                //选择第0个设备
    .frequency = 100000000U,                                    //设置通讯频率
};
void LCD_GPIO_Init(void)
{
   dev0=device_get_binding("GPIO_A");
   dev1= device_get_binding("SPI_0");


   if(dev1 == NULL){
 
        printk("ERR: No Device Drivers!\n");
        return;
 
    }
 
    //check device
    if(!device_is_ready(dev1)){
 
        printk("ERR: Device Was Not Ready - %s\n",dev1->name);
        return;
 
    }

  (void)gpio_pin_configure(dev0,14,(GPIO_OUTPUT|GPIO_PULL_UP));
  (void)gpio_pin_configure(dev0,15,(GPIO_OUTPUT|GPIO_PULL_UP));
  (void)gpio_pin_configure(dev0,16,(GPIO_OUTPUT|GPIO_PULL_UP));
  (void)gpio_pin_configure(dev0,13,(GPIO_OUTPUT|GPIO_PULL_UP));

}

IMG_20221120_225559.jpg

推荐阅读
关注数
5167
内容数
99
聆思科技官方专栏,专注AIOT芯片,持续分享有趣的解决方案。商务合作微信:listenai-csk 技术交流QQ群:825206462
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息