历史上的今天
返回首页

历史上的今天

今天是:2025年01月28日(星期二)

2020年01月28日 | 我的低功耗MSP430学习生涯

2020-01-28 来源:eefocus

从今天开始学习利用MSP430FR2433这款芯片实现测量不同阻抗的天线并实现匹配。

这是我第一次用MCU,用的不好,请多多指教,中途有错,请纠正。

(1)硬件部分功能实现

MCU

在这里插入图片描述

下面是天线匹配

在这里插入图片描述

最后一个模块是电阻桥

在这里插入图片描述

(2)代码部分

这里我刚刚开始学,下面是主程序,我将以看懂程序来记录我的学习过程。

void main(void)

{

// Initialize MCU

init_watchdog(); //初始化看门狗

init_clocks();

init_gpios();


// Initialize peripherals

init_rocky100();

init_rmeter();


// Release MCU gpios

release_gpios();


__bis_SR_register(GIE);


// Load configuration

// Configure sensor

init_systimer();


fSysTick = true;


while (1)

{


    if (fSysTick == true)

    {

        // Reset timer flag

        fSysTick = false;

        if (SysTickCounter++ >= r100DemoConf.nSysTicksPerSample)

        {

            SysTickCounter = 0;

            rocky100_update_data(meas_rmeter());

        }

    }


    if (fR100 == true)

    {

        // Reset timer flag

        fR100 = false;


        // Check rx_buffer


        // Reset SPI

        reset_rocky100_spi();


    }


    if (rocky100_is_idle())

    {

        mcu_lpm_enter(4);

    }else{

        mcu_lpm_enter(0);

    }

}


看门狗的初始化程序比较简单,WDTPW=0X5A00,这是默认值,WDTHOLD=0X0080,这样可以使低八位的最高位置1,这部分可以查手册,在看门狗寄存器有介绍。


void init_watchdog()

{

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer,WDTHOLD=1b,WDTPW set fault。

}

现在要理解这个时钟初始化程序,

void init_clocks()

{

// Configure one FRAM waitstate as required by the device datasheet for MCLK

// operation beyond 8MHz before configuring the clock system.

FRCTL0 = FRCTLPW | NWAITS_1; //使能FRCTL寄存器,等待模式1


__bis_SR_register(SCG0);                           // disable FLL

这个代码让我知道了bis与bic的区别,,下面可以查CSC寄存器得到每一句话的意思。

CSCTL3 |= SELREF__REFOCLK;               // Set REFO as FLL reference source,P116

CSCTL0 = 0;                                   // clear DCO and MOD registers

CSCTL1 &= ~(DCORSEL_7);             // Clear DCO frequency select bits first,即使是取反了,运算时先取反,然后与

CSCTL1 |= DCORSEL_5;                               // Set DCO = 16MHz

CSCTL2 = FLLD_0 + 487;                             // DCOCLKDIV = 16MHz   ,000b = fDCOCLK ÷ 1,487=0X01E7=0000 0001 1110 0111

__delay_cycles(3);                                 //这里延时了多久,我在猜测这里是不是延时3s ,

//__bic_SR_register(SCG0);                           // enable FLL

// Disable waiting FLL lock, as it takes about 300ms in active mode.

// Just go to sleep and work with unlocked clock during first operations.

//while(CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1));         // FLL locked


CSCTL4 = SELMS__DCOCLKDIV; // set default REFO(~32768Hz) as ACLK source, ACLK = 32768Hz

                                           // default DCOCLKDIV as MCLK and SMCLK source


}


推荐阅读

史海拾趣

Exclara Inc公司的发展小趣事

在电子行业这个竞争激烈的领域里,技术的更新换代速度非常快。为了保持领先地位,Exclara高度重视研发投入,不断引进高端人才和先进设备,加强研发团队建设。通过持续的研发投入,公司不仅保持了技术的领先地位,还成功开发出了一系列具有自主知识产权的核心技术。

Advanced Ceramic X Corporation公司的发展小趣事

在Exclara看来,质量是企业的生命线。公司始终坚持质量至上的原则,从原材料采购到生产过程的每一个环节都严格把关,确保产品质量的稳定性和可靠性。同时,公司还建立了完善的客户服务体系,为客户提供全方位、个性化的服务支持。这种以客户为先的经营理念不仅赢得了客户的信任和支持,也为公司赢得了良好的口碑和声誉。

Barnbrook Systems Limited公司的发展小趣事

随着技术的不断进步,Barnbrook意识到单一的电路板产品已经无法满足市场的多元化需求。于是,公司开始拓展产品线,逐步推出了包括服务器、存储设备以及网络设备在内的一系列电子产品。同时,Barnbrook也积极开拓国内外市场,通过参加国际电子展会、建立销售网络等方式,不断提升品牌知名度和市场份额。

台湾凌通(Generalplus)公司的发展小趣事
检查电源电压是否正常,以及电源线路是否连接良好,无断路或短路现象。
达晶微(CREATEK)公司的发展小趣事

随着市场需求的不断变化,达晶微不断加大研发投入,推出了一系列具有创新性的产品。这些产品不仅提高了能效,降低了成本,还满足了客户对高质量、高性能半导体器件的需求。公司凭借技术创新和产品升级,赢得了客户的广泛认可。

博众电气(BOZHONG ELECTRIC)公司的发展小趣事

博众电气自创立之初,就明确了自己的市场定位和发展方向。作为一家致力于成为一站式电子物料供应企业的公司,博众电气从一开始就注重技术研发和产品质量。公司创始人凭借对电子行业的深刻理解和敏锐的市场洞察力,为博众电气奠定了坚实的基础。

在初创期,博众电气通过引进国内外先进的生产设备和检测设备,不断提升产品的性能和质量。同时,公司还注重与国内外知名同行的技术交流和协作,积极吸收和借鉴先进的生产和管理经验。这些举措使得博众电气在激烈的市场竞争中逐渐脱颖而出。

问答坊 | AI 解惑

有了解CH341T这个芯片的大侠吗

小弟在学习画板的时候设计了一块STC5410AD的小学习板,可是后来老师要把这块板做出来,厂商做出来后测试的时候出现了一个问题,一直没解决。 通常51都用MAX232U转串下载,可我的下载芯片用的是CH341T,因为看到它有转U口 ...…

查看全部问答>

三星2450sd卡驱动遇到的问题(休眠唤醒sd会发生拔出和插入的消息)

在休眠唤醒的时候,我不希望发生拔出和插入的消息。请问哪位老大解决了这个问题?请指点一下。…

查看全部问答>

S3C2440 Wince5.0 ActiveSync无法同步

使用同一个Eboot,开发板上下ce4.2的nk可以同步,说明硬件没问题 ce5.0如下配置 PB添加了以下组件 end user ActiveSync shell Network end user RAS/PPP TAPI2.0 Unimodem USB Fuction Seriel USB Fuction Controller 驱动使用三星原 ...…

查看全部问答>

如何获取设备序列号sn

extern \"C\" __declspec(dllimport) BOOL KernelIoControl(   DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize,   LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned ); #define IOCTL_HAL_G ...…

查看全部问答>

关于看门狗的问题

我现在用的是STC12C5052单片机,它本身内部有硬件看门狗,可是程序中并没有用到看门狗, 只是把单片机的RST脚接地了,我想问一下,是不是即使有看门狗电路也可以根据实际情况 不用看门狗?软件加上看门狗功能只是能保证程序更稳定的运行(不死机 ...…

查看全部问答>

EVC 中结构体的问题

  如果头文件中有个结构体: struct FvFixed {         CString m_str; public:         friend FvFixed const        operator+(const FvFixed x, const FvFixed y); ...…

查看全部问答>

关于文件驱动的学习,急

最近要开发一个文件驱动程序,我有一点驱动程序开发经验(虽然不多,但也算入门),我想先阅读一个短小的程序(最好有注释),掌握精髓后在逐渐阅读难点的程序(本人认为IFS DDK的代码对于入门来说还是有点难),请大家给提供一下信息,哪里有简单的文件驱动的 ...…

查看全部问答>

请问 Platform Builder 4.2 如何定制英文版wince4.2 ?

请问 Platform Builder 4.2 如何定制英文版wince4.2 ? 我在定制时 把有关语言选项都关闭结果定制的wince4.2还是中文界面 …

查看全部问答>

咨询下STM32GOIO管脚双向传输问题!

咨询下STM32 GOIO管脚双向传输问题! 现采用管脚PD0-7  数据需要双向传输,即能接收数据,也能对外发送数据,那么是不是每次都必须设置方向?? 比如接受数据时,要先设置管脚为输入.. 发送数据时,又药重新设置管脚为输出.. ...…

查看全部问答>

面试之青岛软控

    今天,软控的面试结束了,现在还没有给我回复。    不知道是什么原因,pass了?还是明天一早再给我回复,忐忑!    希望是明天一早给我回复,反正笔试那天早上给我的通知让我笔试。今天早上给我 ...…

查看全部问答>