LGT 发表于 2013-12-21 22:25:34

应用笔记:使用ICCAVR快速开发LGT8F88A - 详细教程

文档包含的内容:
1. ICCAVR的安装,配置以及使用方法
2. 与ICCAVR配套使用的程序下载方法
        SWDICE_mkII + LGTMix_ISP的使用方法
        SWDICE_mkII + avrdude的使用方法
3. 如何将avrdude与ICCAVR无缝连接
4. LGT8F88A的系统时钟配置程序示例




STM32_Study 发表于 2013-12-21 22:53:16

太给力了~~

正需要这个,楼主再接再厉

STM32_Study 发表于 2013-12-21 22:58:48

楼主,出一个LGT的时钟和外设配置生成软件吧。就跟ICCAVR的向导一样~~

这样就不需要记住很多寄存器了。

LGT 发表于 2013-12-21 23:05:22

STM32_Study 发表于 2013-12-21 22:58
楼主,出一个LGT的时钟和外设配置生成软件吧。就跟ICCAVR的向导一样~~

这样就不需要记住很多寄存器了。 ...

很早之前就有这种自动生成配置的想法,当时想的是一个大的自动化系统,包括了配置,编译,下载,调试等等,
结果因为太复杂就放弃了, 不过这个想法的确值得好好研究,如果能找到一个好的实现方法,值得去做。

就类似ARM牵头搞的mbed一样,这个值得去做!

STM32_Study 发表于 2013-12-21 23:10:32

LGT 发表于 2013-12-21 23:05
很早之前就有这种自动生成配置的想法,当时想的是一个大的自动化系统,包括了配置,编译,下载,调试等等 ...

我觉得没必要贪多贪全,这样往往最后什么也做不好

就做自动生成配置,这个简单,你们工程师熟悉寄存器,做起来也容易。

编译部分,每个客户选用的都不一样,IAR、GCC、ICC、AVRStudio,这个我觉得没必要再早轮子了。也不会比他们做得更好

下载已经有LGTMix ISP

调试就是编译环节的那几个即可~~

现在最缺的就是自动生成配置。有了这个,新用户才好入门。大家都很忙啊,哪里有那么多时间来学习研究寄存器~~

STM32_Study 发表于 2013-12-21 23:12:24

可以说,自动生成配置的软件框架,稍微懂一点上位机编程的工程师就能做出来的。所以关键在于熟悉寄存器的配置,要做这些逻辑而已

这个对你们原厂来说,难度应该很小的。{:lol:}

laotui 发表于 2013-12-22 00:25:38

支持楼主,再接再厉哦。{:smile:}

laotui 发表于 2013-12-22 00:30:00

08A和88A的使用过程一样吗?现在推出的新教程都在介绍88A,手头有08A下载程序什么的都一样吗?{:smile:}

LGT 发表于 2013-12-22 11:31:44

STM32_Study 发表于 2013-12-21 23:10
我觉得没必要贪多贪全,这样往往最后什么也做不好

就做自动生成配置,这个简单,你们工程师熟悉寄存器, ...

我们的想法也不是要重新设计一套工具,而是想把他们很好的整合起来,简化开发流程。

不过你说的对,工具的功能多了,工具本身的复杂性也需要考虑;

我们会提供一个方便,高效的代码生成工具,敬请期待!

LGT 发表于 2013-12-22 11:32:57

laotui 发表于 2013-12-22 00:30
08A和88A的使用过程一样吗?现在推出的新教程都在介绍88A,手头有08A下载程序什么的都一样吗? ...

08A的稍有区别,这个考虑单独提供一个文档介绍。

LGT 发表于 2013-12-22 11:55:38

laotui 发表于 2013-12-22 00:30
08A和88A的使用过程一样吗?现在推出的新教程都在介绍88A,手头有08A下载程序什么的都一样吗? ...

08A的话,如果是用SWDICE_mkII,基本上和88A的开发流程是一样的, 不同点有两处:
1. 如果是LGT8F08A, Target device选择:ATMega162
2. 如果是用avrdude下载,命令为:avrdude -F -cjtag2isp -pm162 -Pusb -Uflash:w:Project.hex:i

需要注意的是,SWDICE_mkII只能读写LGT8F08A的FLASH内容,如果要修改熔丝位和E2PROM的内容,需要用08A的专用ISP烧写器:
http://www.mailshop.cn/images/products/big/image_big_10978DTCN9E_2010.jpg

jianjun42 发表于 2013-12-24 15:13:46

好资料,谢谢楼主分享。

hall 发表于 2013-12-24 15:54:15

STM32_Study 发表于 2013-12-21 23:10
我觉得没必要贪多贪全,这样往往最后什么也做不好

就做自动生成配置,这个简单,你们工程师熟悉寄存器, ...

绝对同意!

hall 发表于 2013-12-24 15:57:06

LGT 发表于 2013-12-22 11:55
08A的话,如果是用SWDICE_mkII,基本上和88A的开发流程是一样的, 不同点有两处:
1. 如果是LGT8F08A, T ...

LGT8有两种ISP?我记得有一种ISP和一种仿真器啊。顺便简单介绍下仿真器和下载器吧,我理解的是下载器只能下载+写熔丝,仿真器能仿真+下载+写熔丝,对吗?

LGT 发表于 2013-12-24 21:31:38

hall 发表于 2013-12-24 15:57
LGT8有两种ISP?我记得有一种ISP和一种仿真器啊。顺便简单介绍下仿真器和下载器吧,我理解的是下载器只能 ...

基本正确:

ISP烧写器只有一种,而是是给LGT8F08A专用的。
调试器也只有一种,所有LGT 8位MCU通用。

LGT8F08A由于历史原因,没有做到让调试器也可以作为完整的ISP烧写器使用,所以只能用那个专用的ISP工具烧写FLASH,E2PROM和熔丝
后面的MCU,包括LGT8F88A, 只要一个调试器就够了,可以调试用,也可以做ISP下载器用。

chenxp99 发表于 2013-12-24 21:40:48

LGT 发表于 2013-12-22 11:31
我们的想法也不是要重新设计一套工具,而是想把他们很好的整合起来,简化开发流程。

不过你说的对,工具 ...

真心期待,小工具解决大问题。。。。。。

hall 发表于 2013-12-24 23:10:31

LGT 发表于 2013-12-24 21:31
基本正确:

ISP烧写器只有一种,而是是给LGT8F08A专用的。


明白了 非常感谢

天语 发表于 2013-12-25 09:58:42

LGT 发表于 2013-12-24 21:31
基本正确:

ISP烧写器只有一种,而是是给LGT8F08A专用的。


“基本正确” “没有做到让调试器也可以作为完整的ISP烧写器使用,所以只能用那个专用的ISP工具烧写FLASH,E2PROM和熔丝”这两句话不是冲突吗? 调试器到底能不能用来烧写FLASH,E2PROM和熔丝?

xwkm 发表于 2013-12-25 10:15:53

天语 发表于 2013-12-25 09:58
“基本正确” “没有做到让调试器也可以作为完整的ISP烧写器使用,所以只能用那个专用的ISP工具烧写FLASH ...

E2P和FLASH可以用SWD写。FUSE只能用ISP写。

天语 发表于 2013-12-25 10:32:17

xwkm 发表于 2013-12-25 10:15
E2P和FLASH可以用SWD写。FUSE只能用ISP写。

这样啊,那就是说88A系列的可以配置熔丝位了。

LGT 发表于 2013-12-25 10:45:28

天语 发表于 2013-12-25 10:32
这样啊,那就是说88A系列的可以配置熔丝位了。

88A并没有熔丝需要设置的:
1. 88A使用了默认加密的方式,不需要LOCK位,所以使用时不需要考虑加密的设置,芯片烧写程序后,下次上电就是已经加密的。
2. 88A的时钟配置是通过PMCR寄存器,与熔丝无关,(具体可以参考本贴一楼的文档中最后一章节)
3. 88A的RC校准是出厂校准的,也不需要重新设置
4. 88A的BOR的配置,是可以通过熔丝的方式设置的,但是也可以通过寄存器设置,具体可以参考:LGT8F88A databook中【系统控制与复位】章节关于VDTCR寄存器的介绍。

因此,使用88A完全可以不考虑熔丝的问题。 目前LGTMix_ISP工具中,没有开放对88A熔丝的设置功能,如果后面开放,应该也只有在通过熔丝设置BOR时才需要。

MINI2440 发表于 2013-12-25 10:46:27

早就应该给了。。。。

xwkm 发表于 2013-12-25 15:56:41

LGT 发表于 2013-12-25 10:45
88A并没有熔丝需要设置的:
1. 88A使用了默认加密的方式,不需要LOCK位,所以使用时不需要考虑加密的设置 ...

明白.后续产品应该也是这样的。

Joinj 发表于 2013-12-26 00:33:07

搞下来,研读一下···

han88889 发表于 2014-1-8 10:48:01

void delays(unsigned int cy)
{
        unsigned int i;
       
        for(i = 0; i < cy; i++) {
                NOP(); NOP(); NOP(); NOP();
                NOP(); NOP();                  
        }
}


// cm : clock source select
// CLK_32MRC : internal 32MHz RC
// CLK_32KRC : internal 32KHz RC
// CLK_MOSC : external 400K~32MHz crystal
// CLK_KOSC : external 32K~400K crystal
// cps : clock per-scalar
// CLK_DIV0 : no scalar
// CLK_DIV2 : clk/2
// CLK_DIV4 : clk/4
// CLK_DIV8 : clk/8
// ...
// CLK_DIV256: clk/256
void clock_init(unsigned char cm, unsigned char cps)
{
volatile unsigned char ctmp;
PMCR = 0x80; // PMCE enable
PMCR |= cm; // enable clock source
delays(32);
ctmp = PMCR;
ctmp &= 0x9f;

if(cm == CLK_MOSC)
ctmp |= 0x20;

PMCR = 0x80; // PMCE enable
PMCR = ctmp; // set clock source
delays(1);
// configure clock pre-scalar
CLKPR |= 0x80;
CLKPR |= cps;
delays(1);
}


我想把时钟改为外部的12M晶振,可总是有问题,能帮我看一下问题出在那吗?

LGT 发表于 2014-1-9 10:27:55

han88889 发表于 2014-1-8 10:48
void delays(unsigned int cy)
{
        unsigned int i;


如果只是切换到外部高速晶振,可以用下面更简洁的代码,
你用这个代码测试下,测量下晶振有没有起振:

void clock_init(unsigned char cps)
{
PMCR = 0x80; // PMCE enable
PMCR |= 0x4; // enable external high speed crystal i/o
delays(32);

PMCR = 0x80; // PMCE enable
PMCR = 0xA5; // set clock source
delays(1);

// configure clock pre-scalar
CLKPR |= 0x80;
CLKPR = cps;
delays(1);
}

han88889 发表于 2014-1-9 14:41:42

谢谢,问一下,因为莫老大这没有放LGT8F88A的片子,我在你们淘宝上买的是量产的片子,还是工程样片?

logicgreen 发表于 2014-1-9 22:03:46

han88889 发表于 2014-1-9 14:41
谢谢,问一下,因为莫老大这没有放LGT8F88A的片子,我在你们淘宝上买的是量产的片子,还是工程样片? ...

是量产的片子。

yanglei920509 发表于 2014-4-24 12:43:24

mark。。。。。

mitesh2patel 发表于 2014-7-1 13:50:13

Nice controller , can we get 32K ROM in this model

HYLG 发表于 2014-12-17 01:40:56

LGT啥时能出双串口的片子呀。

鱼尾之恋 发表于 2015-1-28 16:23:00

谢谢,分享!Thanks!
页: [1]
查看完整版本: 应用笔记:使用ICCAVR快速开发LGT8F88A - 详细教程