• 本程序由芯海科技有限公司技术人员编写而成。该程序仅用于芯片功能的简单测试及作为该款芯片程序设计的入门参考。程序仅在有限的环境下测试并通过测试。若您有意调用该程序进行生产活动,请务必进行更加细致的设计和...
  • 编译平台:CSU-IDE 硬件平台 CSU-KITS (用ALTERA FPGA模拟出芯片的功能,因为这里用的是OTP MCU) 1.header files   CSURP3215.inc 芯片的头文件  define_ram.inc 管脚 寄存器标志位的定义 ...

    编译平台:CSU-IDE

    硬件平台 CSU-KITS (用ALTERA FPGA模拟出芯片的功能,因为这里用的是OTP MCU)

    1.header files 

      CSURP3215.inc    芯片的头文件
      define_ram.inc   管脚 寄存器标志位的定义
    2.source files
      1.delay_time.asm  延时
          ||
          || 
      2.interrupt_file.asm 中断处理 把work和status寄存器压栈保护,判断中断来源,处理,清零中断标志位。
          ||
          ||
      3.sys_initate.asm  系统初始化 初始化顺序为时钟初始化——中断初始化——IO口初始化——看门狗初始化——AD初始化——定时器初始化
      4.key_respond.asm......   按键处理

      5.main.asm 主文件 包含以上文件的宏定义

      6. .......

    展开全文
  • 芯海芯片代码段

    2014-03-24 18:01:40
    ;============================================ ; filename: elecsmoke.asm ; chip : CSU8RP3115 ; author : ...芯海科技 ;1K×14位程序存储器 ;5+3路12bitADC ;64字节RAM ;5个双向IO口和1个输入口 ;

    ;============================================
    ; filename: elecsmoke.asm
    ; chip    : CSU8RP3115
    ; author  :
    ; date    : 2014-02-27
    ;芯海科技
    ;1K×14位程序存储器
    ;5+3路12bitADC
    ;64字节RAM
    ;5个双向IO口和1个输入口
    ;
    ;代码选项
    ;内部晶振4M
    ;指令周期=16时钟周期=16/0.25(us)=64个振荡周期=64us
    ;
    ;============================================
    include CSU8RP3115.inc
    ;变量定义
    STARTSTA EQU 2 ;初始上电
    SMOKESTA EQU 4 ;吸烟状态
    OVERTSTA EQU 6 ;吸烟超时
    SHORTSTA EQU 8 ;短路状态
    CHARGSTA EQU 10 ;充电状态
    LOCKSTA EQU 12  ;锁定状态
    STAYSTA EQU 14  ;待机状态
    SLEEPSTA EQU 16 ;睡眠状态

    TM3IF EQU 4
    TM3IE EQU 4

    SYSSTATE EQU 0X40 ;系统状态
    LEDCOUNT EQU 0X41 ;LED闪烁计数
    KEYCOUNT EQU 0X42 ;键盘按键计数
    TIMETICKS EQU 0X43 ;定时时间
    VARH EQU 0X44 ;临时变量高位,用于乘法和除法的计算
    VARL EQU 0X45 ;临时变量低位,用于乘法和除法的计算
    TEMPVARL EQU 0X46 ;临时变量
    TEMPVARH EQU 0X47 ;临时变量
    TEMPVAR1 EQU 0X48 ;临时变量
    TEMPVAR2 EQU 0X49 ;临时变量
    ;----------指令扩展
    MOVLF MACRO F,L ;实现立即数到数据存储的赋值
    MOVLW L
    MOVWF F
    ENDM

    MOVFF MACRO F1,F2 ;实现寄存器到寄存器的赋值
    MOVLW F1
    MOVWF F2
    ENDM

    IORLF MACRO F,L;实现立即数和数据库的逻辑或
    MOVLW L
    IORWF F,L
    ENDM

    ANDLF MACRO F,L;实现立即数和数据库的逻辑与
    MOVLW L
    ANDWF F,L
    ENDM

    MULFF MACRO F1,F2;实现乘法
     BCF STATUS,C;清进位标志
     MOVLF VARH,0H;清除VARH
     MOVLF VARL,0H;清除VARL
     MOVLW TEMPVAR,8H;计算八次
     MOVLF TEMPVARH,0H;清除TEMPH
     MOVLF TEMPVARL,0H;清除TEMPH
    MULTLOOP:
     BCF STATUS,C;清进位标志
     RLF F2;乘数左移动
     BTFSC STATUS,C;进位标志为0则取消下一条指令
     GOTO ROLLADD;移位并相加
     GOTO ROLL;只移位
    ROLLADD:;移位并相加
     BCF STATUS,C;清进位标志
     MOVLF TEMPH,0H;清除TEMPH
     MOVLF TEMPL,0H;清除TEMPH
     RLF F1
     MOVFF TEMPVAR2,TEMPVA1;保存TEMP值
    ROLLLOOP: 
     DECFSZ TEMPVAR2,1;减一,如果为零则取消下条指令
     GOTO ADD
     GOTO MULTI_RET
     NOP
    ADD:;加法
     BCF STATUS,C;清进位标志
     RLF F1;F1乘以2
     RLF TEMPH;TEMPH保存移位后的高位
     GOTO ROLLLOOP
    ROLL:;只移位
     GOTO MULTI_RET
    MULTI_RET:
     DECFSZ TEMPVAR1,1;减一,如果为零则取消下条指令
     GOTO MULTLOOP
    ENDM

    DIVFF MACRO F1,F2;实现除法

    ENDM
    LIGHTLED MACRO
    ENDM

    ;------------------

    ;============================================
    ; program start
    ;============================================
    ORG 000H
    GOTO MAIN ;跳转到主程序运行代码
    ORG 004H
    GOTO INTERRUPT ;跳转到中断处理程序

    MAIN: ;主程序
    ;关键寄存器初始化
    MOVLF INTE,5BH;中断开启并屏蔽所有中断
    MOVLF INTF,0H;清除所有的中断标识
    MOVLF INTF2,0H 
    BCF MCK,W ;内部晶振系统时钟
    BCF MCK,CST_IN ;内部晶振打开
    BSF MCK,CST ;外部晶振关闭

    ;P1口设置,P1.3口只能为输入口
    IORLF PT1CON,38H ;设置数字口00111000B
    IORLF PT1EN,30H;设置4和5为输出口
    IORLF PT1PU,38H;使用上拉电阻
    ANDLF PT1,CFH;设置输出为低电平
    ;P5口设置
    IORLF PT5CON,03H ;禁止开漏输出
    IORLF PT5EN,03H;设置为输出口
    IORLF PT5PU,03H;使用上拉电阻
    IORLF PT5PU,01H;设置输出为高电平

    ;P3口设置
    IORLF PT3CON,01H ;定义为模拟口
    IORLF PT3EN,01H;设置0为输入口
    IORLF PT3PU,0H;断开上拉电阻以接受参考电压
    BSF PT3,0;P3.0设置为高电平以输入参考电压

    ;PWM设置
    ;1) 把PT5.0配置为输出口。
    ;2) 设置 TM2CLK,为定时/计数器2模块选择输入。
    ;3) 设置TM2IN来配置PWM2的周期。
    ;4) 设置TM2R来配置PWM2的高电平的的脉宽。
    ;5) 使能PWM2OUT输出,配置PT5.0为输出端口,之后把T2EN置1启动定时器。
    ;6) PWM从PT5.0输出。
    MOVLF TM2CON,75H;128分频
    MOVLF TM2IN,58H;88D
    MOVLF TM2R,64H;值为100,占空比3.7/4.2=0.88=88%
    BSF METCH,1 ;0:CPUCLK , 1:MCK
    ;中断设置

    ;外部中断1设置
    MOVLF PT1CON,14H;开P1.3的外部中断1使能,其他引脚关闭外部1中断,中断1设置为上升沿触发
    ;AD转换初始化(R:3.2V-3.5V{1.0666~1.1666 : 3120 ~ 3413} ;G:3.8V-4.2V{1.2666~1.4 : 3706~4096};B:3.5V-3.8V{1.1666~1.2666 : 3413~3706})
    MOVLF SRADCON0,30H;ADC输入信号获取时间=2个ADC时钟;ADC采样时钟=CPUCLK
    MOVLF SRADCON1,92H
    BCF METCH,6;0XX时内部参考电压为1.4V
    ANDLF SRADCON2,0FH;P3.0输入模拟信号(高四位为0000则为AIN0输入)
    MOVLF PT3CON,1H ;把其它的模拟口设为数字口,打开3.0为模拟口
    BSF SRADCON1,7;开启AD转换


    ;定时器3初始化,完成定时功能
    BCF TM3CON,T3CKS ;选取CPUCLK或MCK的分频时钟
    BSF TM3CON,T3RATE0
    BSF TM3CON,T3RATE1
    BSF TM3CON,T3RATE2
    BCF METCH,2  ;0111=CPUCLK /128 = 4M/128 = (1/32)MHz=32us


    ;主分支
    MOVLF SYSSTATE,STARTSTA;初始状态--上电
    MAINLOOP:
    GOTO $+SYSSTATE;Switch
    GOTO STARTSTA_LOOP;case初始上电
    GOTO SMOKESTA_LOOP;case吸烟状态
    GOTO OVERTSTA_LOOP;case吸烟超时
    GOTO SHORTSTA_LOOP;case短路状态
    GOTO CHARGSTA_LOOP;case充电状态
    GOTO LOCKSTA_LOOP;case锁定状态
    GOTO STAYSTA_LOOP;case待机状态
    GOTO SLEEPSTA_LOOP;case睡眠状态

    STARTSTA_LOOP:;初始上电,LED灯闪三下
    MOVLF LEDCOUNT,03H;闪烁3次
    MOVLF TIMETICKS,3CH;3CH=60半秒闪一次
    CALL LIGHT_LED;调用亮灯程序
    MOVLF SYSSTATE,STAYSTA;进入待机状态
    GOTO STATE_EXIT

    SMOKESTA_LOOP:;吸烟状态
    ;获取电压并点亮相关颜色灯
    IORLF PT5PU,00H;;开PWM输出
    ;启动定时器
    GOTO STATE_EXIT

    OVERTSTA_LOOP:;吸烟超时
    IORLF PT5PU,01H;;关闭MOS管
    ;闪烁8次
    MOVLF SYSSTATE,STAYSTA;进入待机状态
    GOTO STATE_EXIT

    SHORTSTA_LOOP:;短路状态
    IORLF PT5PU,01H;关闭MOS管
    ;闪烁3下
    GOTO STATE_EXIT

    CHARGSTA_LOOP:;充电状态
    IORLF PT5PU,01H;关闭MOS管
    ;LED闪烁三次,进入充电状态
    GOTO STATE_EXIT

    LOCKSTA_LOOP:;锁定状态
    ;IORLF PT5PU,01H;关闭MOS管
    ;闪三下
    ;关闭LED灯
    GOTO STATE_EXIT

    STAYSTA_LOOP:;待机状态
    IORLF PT5PU,01H;设置输出为高电平,关闭PWM输出
    ;检测电压并切换灯颜色
    GOTO STATE_EXIT

    SLEEPSTA_LOOP:;睡眠状态
    ;关AD,关闭一些必要的输出设置
    NOP
    SLEEP
    NOP
    GOTO STATE_EXIT
    ;返回主循环
    STATE_EXIT:
    GOTO MAINLOOP ;跳转到主循环
    ;中断接收
    INTERRUPT:
    PUSH
    BTFSC INTF,E0IF ;判断外部中断0标志
    GOTO EXO_HANDLE
    BTFSC INTF,E1IF ;判断外部中断1标志
    GOTO EX1_HANDLE
    BTFSC INTF,SRADIF ;判断AD转换中断标志
    GOTO AD_HANDLE
    BTFSC INTF,TM0IF ;判断定时器0中断标志
    GOTO TM0_HANDLE
    BTFSC INTF,TM2IF ;判断定时/计数器2中断标志
    GOTO TM2_HANDLE
    BTFSC INTF,TM3IF ;判断定时/计数器3中断标志
    GOTO TM3_HANDLE
    GOTO STATE_EXIT;返回主循环
    ;中断处理
    EXO_HANDLE:
    NOP
    RETFIE

    EX1_HANDLE:;按键吸烟
    MOVLF SYSSTATE,SMOKESTA;
    NOP
    RETFIE

    AD_HANDLE:;AD转换处理逻辑
    NOP
    RETFIE

    TM0_HANDLE:
    NOP
    RETFIE

    TM2_HANDLE:
    NOP
    RETFIE

    TM3_HANDLE:;定时/计数器3定时逻辑
    DECFSZ TIMETICKS,0
    RETURN
    TIMEDELAY: ;(TM3IN+1)/TM3CLK=(TM3IN+1)/(1/32)MHz=0.008192s,加上指令消耗的振荡周期=4*32=128us为0.00832s,一秒运行120.19次 循环60次为半秒
    MOVLF TM3IN,FFH;计数值导入
    BCF PT3CON,T3RST ;清零标志位
    BSF PT3CON,T3EN ;使能定时器3
    RETURN

    LIGHT_LED:;点亮LED灯
    BSF PT1,4;蓝灯
    ;启动半秒定时器
    BCF PT1,4;关闭蓝灯
    ;循环三次
    DECFSZ LEDCOUNT,1;减一跳转
    RETURN
    GOTO LIGHT_LED
    end
    ;============================================

     

    展开全文
  • https://github.com/Tvirus/datasheet

    https://github.com/Tvirus/datasheet

     

    tplink 内部 openwrt 系统的编译框架分析

    atsha204a 中文 (http://www.microchip.com.cn/newcommunity//Uploads/201907/5d1962cb81d3a.pdf)

    fm17550

    focaltech

    tcs3701

    VL53L1

    aw87519

    展开全文
  • 简介  模数转换器(ADC)是SAR结构1,具有10个输入源,最高4096阶分辨率,将模拟信号传输到12位数字缓冲器。ADC建立在10通道输入源中,以测量10种不同的模拟信号源。ADC分辨率为12位。ADC具有四个时钟速率来决定ADC...

    简介

     模数转换器(ADC)是SAR结构1,具有10个输入源,最高4096阶分辨率,将模拟信号传输到12位数字缓冲器。ADC建立在10通道输入源中,以测量10种不同的模拟信号源。ADC分辨率为12位。ADC具有四个时钟速率来决定ADC转换速率。ADC参考电压包括5个源。四个内部参考电源包括VDD,4V,3V和2V。另一个是来自AVREFH引脚的外部参考电压输入引脚。ADC在P1CON/PUCON寄存器中建立,以设置纯模拟输入引脚。ADC和ADS位设置后,ADC开始将模拟信号转换为数字数据。除了ADS位可以开始转换模拟信号外,PW1EN还具有转换模拟信号的ADC功能。ADC可以在空闲模式下工作。ADC运行后,如果中断启用,系统将从绿色模式唤醒到正常模式。
    在这里插入图片描述

    ADC的配置流程

    在开始ADC转换之前,必须完全设置这些配置,使用以下步骤配置ADC:

    • 1、选择并启用转换开始ADC输入通道。 (通过CHS [3:0]位和GCHS位)
    • 2、必须将ADC输入通道的GPIO模式设置为输入模式。 (通过PnM寄存器)
    • 3、必须禁止ADC输入通道的内部上拉电阻。 (通过PnUR寄存器)
    • 4、必须设置ADC输入通道的配置控制位。 (通过PnCON寄存器)
    • 5、选择ADC高参考电压。 (通过VREFH寄存器)
    • 6、选择ADC时钟速率。 (通过ADCKS [1:0]位)
    • 7、设置ADENB位后,ADC准备将模拟信号转换为数字数据。

    在这里插入图片描述
    所以配置流程变成代码就是:

    void InitAD(void)
    {
        // 设置通道
        ADM = 0x80;          // bit7置1使能ADC通道,低功耗模式下通过bit7置0来禁止ADC通道以降低功耗
        ADM |= 0x02;         // 低四位是ADC通道,P12、AIN2,具体参考ADC输入通道
        
        // 设置时钟频率
        ADR = 0x40;
        ADR |= 0x00;         // 00 = fosc/16, 01 = fosc/8, 10 = fosc/1, 11 = fosc/2 
        // 设置参考电压源
        VREFH = 0x00;        // bit内部参考电压
        VREFH |= 0x02;       // 内部参考电压4V
        // 输入引脚配置
        P1CON |= 0x0c;		 //
        P2CON |= 0;
    }
    

    开始转换

     当ADENB位使能ADC IP时,需要通过程序进行ADC启动。除ADS位可以开始转换模拟信号外,PW1EN还具有转换模拟信号ADC功能。转换可以通过以下方式之一启动:

    ● 向寄存器ADM的ADS位写入1
    ● 当ADPWS位为“1”时,PWM1使能。

     在设置ADENB和ADS位后,ADC开始将模拟信号转换为数字数据。转换完成后,ADS位复位为逻辑0.当转换完成时,ADC电路将EOC和ADCF位设置为“1”,数字数据输出设置为ADB和ADR寄存器。如果ADC中断功能使能(EADC = 1),ADC转换后,当ADCF为“1”时,ADC中断请求发生并执行中断服务程序。在中断过程中需要通过程序清除ADCF。
    注意,当ADPWS位为“1”时,如果将PWM使能触发用作转换源,则ADC将持续转换,直到禁用PWM。

    ADC输入通道

     ADC内置10通道输入源(AIN0 - AIN9),用于测量由CHS [3:0]和GCHS位控制的10个不同模拟信号源.AIN1为内部2V或3V或4V输入通道。外面没有任何输入引脚。此时ADC参考电压必须是内部VDD和外部电压,而不是内部2V或3V或4V。 AIN10可以成为电池系统的良好电池检测器。为了选择合适的内部AVREFH电平并比较值,系统内置了一个高性能,低成本的低电池检测器。

    ADC输入通道:
    在这里插入图片描述

    以下为ADC外设的电气特性表:

    在这里插入图片描述
     由上表可以看到,参考电压的使用,比如在 Viref 选择 内部2V参考电压、VDD为5V时,参考电压有正负0.04V的电压漂移。


    1. 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)是采样速率低于5Msps (每秒百万次采样)的中等至高分辨率应用的常见结构。SAR ADC的分辨率一般为8位至16位,具有低功耗、小尺寸等特点。这些特点使该类型ADC具有很宽的应用范围,例如便携/电池供电仪表、笔输入量化器、工业控制和数据/信号采集等。 ↩︎

    展开全文
  • 现在的电子产品,随便拿来一个拆开,都能看到单片机的身影,单片机在电子产品中已经成了标配。因为现在的电子产品都是以单片机为核心,根据不同的需求加以不同的外设电路,再做一些认证相关的设计工作,都是这个构架...

    现在的电子产品,随便拿来一个拆开,都能看到单片机的身影,单片机在电子产品中已经成了标配。因为现在的电子产品都是以单片机为核心,根据不同的需求加以不同的外设电路,再做一些认证相关的设计工作,都是这个构架。以智能手环为例,可以实现步数统计、心率检测、液晶显示、与手机蓝牙通讯、手机来电振动等功能,这些功能通过选用相关的传感器、元器件来实现,最后单片机做数据处理和逻辑处理,核心还是单片机,功能框图如下所示。

    单片机高手是这样炼成的!这样学习单片机事半功倍
    1-以单片机为核心的智能手环电路框图

    如今,各种家电、智能穿戴设备、各种数码产品层出不穷,需求量越来越大,这也使得单片机工程师这个岗位需求量巨大,在不同的公司中,这个岗位有不同的称呼,如单片机工程师、电子工程师、硬件工程师、数电工程师等。相对于互联网程序员,单片机工程师低调的多,因为硬件是一个平台,是幕后,所有的效果、界面都是由代码呈现的,所以程序员成了台上的明星。平台可能只有一个,但是明星却有很多,这就要求你这个平台够硬。可以单片机工程师的重要性并不亚于程序员,而单片机工程师的待遇也不会很差,前提是你要坚持住。

    单片机高手是这样炼成的!这样学习单片机事半功倍
    2-华为体脂秤的国产单片机,来自芯海科技

    所以,单片机是一门很有用的技术,学会单片机可以找一份很好的研发岗工作,享受很好的工资待遇。但是万事开头难,在初学入门阶段可能摸不着头脑无从下手毫无头绪,如果有了比较好的学习方法,单片机学习起来也是很有趣、很容易的。和大家分享一下单片机以及单片机C语言编程的学习方法。

    1.选择一块合适的单片机开发板
    单片机开发板集成了各种常用的外设资源,并有详细的配套例程和教程,大大方便了初学者的学习。不管你是从51单片机开始,还是直接从STM32、AVR开始,建议选购一块单片机开发板。大家在选择开发板的时候,可以按照以下几个方面认真筛选:

    硬件资源的丰富程度,开发板配套的硬件资源越多,那初学者所接触的内容也就越多,所涉及的知识面也就越广,在后期扩展学习时也就越方便。

    配套程序的丰富程度,开发板还配备了和硬件资源相关的例程,在前期需要根据例程学习单片机寄存器的配置方式、要学习软件控制硬件的原理,所以例程丰富利于初学者学习。

    是否有及时的技术支持,在初学阶段会碰到各种各样的问题,问题可能很简单但是需要别人的指点,如果有技术支持与之对接那就很容易解决在学习过程中遇到的各种问题,事半功倍。

    头文件不要选择修过的,较大的开发板厂商都修改了单片机的头文件,这么做的目的是为了统一自己的风格,跟其他竞争对手区分开来,也保护了自己的消费群体,从短期来看这可能方便了初学者的学习,但是却不推荐这么做。因为用久了他们的头文件,就会生疏原始的头文件,如果换了另一种品牌的单片机可能很不习惯,甚至都不知道怎么去使用原始的头文件。我们学习的是单片机,并不是开发板厂商提供的平台。

    单片机高手是这样炼成的!这样学习单片机事半功倍
    3-单片机开发板实物图

    2.先从GPIO口的配置开始学习
    GPIO口是单片机最基本、最重要的资源,所有的外设资源都是通过连接GPIO口来实现的,单片机开发板也配套了很多与GPIO相关的硬件资源,例如流水灯控制、按键输入检测、蜂鸣器控制、继电器控制、数码管显示、液晶显示等,这些都是通过GPIO的输入或者输出功能来实现的。几乎每一个初学者都是把流水灯作为入手单片机的第一个项目。通过这些基本的操作,初学者能学到单片机GPIO口的基本概念、配置方式还有相关硬件电路的设计原理,为后面的继续学习打下坚实的基础。

    下面是典型按键输入检测电路和蜂鸣器驱动电路,通过这两个电路可以学会很多基本的电路设计知识和程序设计知识。

    单片机高手是这样炼成的!这样学习单片机事半功倍
    4-基本的输入输出电路

    图中按键输入检测电路中的的电阻R75叫做上拉电阻,在按键没有按下的时候单片机检测到高电平,按键按下后检测到低电平,这个电阻可以防止因引脚悬空所带来的误检测。蜂鸣器 驱动电路中是通过三极管来控制蜂鸣器,电阻R76用作限流保护蜂鸣器,电阻R78用于下拉防止误动作,这个电路中三级管工作在截止和饱和状态。当单片机输出高电平1时三极管饱和导通蜂鸣器发声,当单片机输出低电平0时三极管截止蜂鸣器不工作。

    3.学习单片机重要的片上资源
    单片机的功能之所以强大,是因为集成了很多片上资源,常见的如定时器功能、AD采样功能、外部中断资源、PWM功能等,合理的利用这些资源可以提高电路的设计效率、降低电路的设计难度,使技术方案更加优化、产品成本更低、性能更稳定。所以学习这些片上资源非常重要。

    定时器/计数器功能,定时器可以实现计时功能,实现精确的定时、延时功能;而计数器可以实现外部时钟源、脉冲源的计数功能,可以统计脉冲信号的个数,实现频率/周期的计算等功能。

    AD采用功能,这个功能可以实现模拟信号向数字信号的转化功能,将模拟信号量化为数字信号,方便单片机处理。该功能在传感器产品中应用比较多,比如温度采集、电流采集等。配合相关元器件/敏感探头的使用可以将环境中连续的物理量转化为数字量,单片机处理后可以精确的得到实时的物理量的值。

    中断资源,所谓中断就是优先级较高的事件把正在进行的事件打断,中断事件处理完毕后再接着处理刚才的事件,使用中断资源可以节省单片机的资源,提高单片机的执行效率。

    单片机高手是这样炼成的!这样学习单片机事半功倍
    5-NTC温度检测电路

    上图是一个简单的温度检测电路,感温元器件使用具有负温度系数的热敏电阻NTC来实现,当环境温度升高时NTC的阻值减小,那么NTC两端的电压就变小,单片机通过AD采样功能采集NTC两端的电压值,通过该电压值反推出当前NTC的电阻值,再根据NTC电阻值和温度的对应关系计算出当前环境的温度值,从而实现了温度传感器的功能。

    4.学习单片机的通讯功能
    单片机带有通讯功能,常用的通讯功能有UART、IIC、SPI、CAN、USB等,UART即可以实现通讯功能,又能实现单片机程序的下载功能,所以UART基本是单片机的标配资源。UART配合其他电平转换芯片可以衍生出多种通信方式,如通过MAX232芯片可以RS232的通讯、通过MAX485可以实现RS485总线的通讯功能、通过42675可以CAN总线通讯等功能。除此之外,还可以通过UART实现wifi无线传输、蓝牙无线传输和RF射频等无线通讯功能。

    单片机高手是这样炼成的!这样学习单片机事半功倍
    6-RS485接口典型电路

    上图是通过MAX3845所实现的RS485接口电路,电平转化芯片通过UART和单片机连接,实现数据的透传功能,图中的三极管用于通讯时的数据方向的切换。

    按照以上步骤学习完,你应该对单片机掌握了一大半了,对常见的外设电路了解的也差不多了,接下来需要实战一下。

    5.参与/主导单片机项目
    学习单片机的目的就是为了以后能够用单片机设计出方案合理、性能稳定、成本占优的产品,所以要抓住参与项目的机会,在项目中锻炼实践动手能力,学会项目的开发流程。开发产品中会涉及到需求的分析、技术方案的制订、芯片的选型、技术原理的实现、功能调试、各中认证等工作,最后才是产品的量产。同时,要学会和项目同事打交道,提升自己的项目领导能力。

    单片机高手是这样炼成的!这样学习单片机事半功倍
    7-产品开发流程

    6.以动手为主,看书为辅
    经常有朋友问我,让我给推荐学习单片机的书籍。单片机不是一门偏重理论的课程,而是重在动手实践。不建议大家以看书为主,在早些年的时候我也看过很多关于单片机教学的书籍,但是看多了就发现了问题,市面上很多关于单片机相关的书籍都是塑成形的基本内容大同小异,而且都是以单片机的数据手册内容为主,或者是直接翻译过去的,或者是直接摘录的。任何一种芯片,最权威的资料永远都是官网发布的数据手册,现在单片机厂商都很注重资料的分享和学习笔记的分享,甚至很多单片机厂商为了推广单片机都做了各种技术方案挂在网站上。所以,大家在使用单片机的过程中遇到了问题首先要去翻阅数据手册和官网的学习笔记,这是最直接有效的方法。

    展开全文
1
收藏数 6
精华内容 2