历史上的今天
返回首页

历史上的今天

今天是:2025年07月11日(星期五)

正在发生

2019年07月11日 | STM32模拟spi控制MCP41100数字电位器

2019-07-11 来源:eefocus

以下代码只需放在一个完整的.c文件中运行就行了,添加基本的支持库就能运行了.


#include "stm32f10x.h"


#define SCK_1 GPIO_SetBits(GPIOA, GPIO_Pin_4)

#define SCK_0 GPIO_ResetBits(GPIOA, GPIO_Pin_4)

#define MOSI_1 GPIO_SetBits(GPIOA, GPIO_Pin_5)

#define MOSI_0 GPIO_ResetBits(GPIOA, GPIO_Pin_5)

#define CS_1 GPIO_SetBits(GPIOA, GPIO_Pin_6)

#define CS_0 GPIO_ResetBits(GPIOA, GPIO_Pin_6)


void writebyte(u8 data);

void mygpioinit(void);

void senddata(void);


/*******************************************************

函数名:mygpioinit(void)

功能:初始化端口

*******************************************************/

void mygpioinit(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStructure);

}



/*******************************************************

函数名:senddata()

功能:发送数据

*******************************************************/


void senddata(void)

{

    CS_0;

    writebyte(0x11);   //发送命令,参照datasheet5.2将数据写入数据寄存器进行配置

    writebyte(0xbb);   //发送数据,范围是0x00到0xff

    CS_1;

}


/*******************************************************

函数名:writebyte(u8 data)

功能:模拟spi

*******************************************************/

void writebyte(u8 data)

{

    u8 i;

    SCK_0;

    MOSI_0;

    for (i = 0; i < 8; i++ )

    {

        MOSI_0;

        SCK_0;

        if (data & 0x80)  //将data与0x80进行与预算,目的是取得date二进制首位数值,如果首位是1,那么MOSI就会变成高电平,否则就会保持低电平

        {

            MOSI_1;

        }

SCK_0;

        SCK_1;

        data <<= 1 ;   //将date左移,继续循环进行比较

    }

}





/*******************************************************

函数名:主函数

功能:

*******************************************************/


int main()

{

    mygpioinit();

    while (1)

    {

        senddata();

    }

}




keil对中文支持太差,复制过来的注释全部乱码了,补了半天的注释.一开始的时候我把SCK,CS,MOSI(对应MCP41100的SI口)三个口都挂在GPIOA下面,刚好我这个开发板GPIOIA这里接了一个蜂鸣器,结果怎么改程序都不能调电阻,后来听到板子发出吱吱声发现是蜂鸣器,找到原因换了别的IO口才调好,大家用开发板做实验时一定要特别小心,使用板子的IO口时最好先看看电路是怎么接的.

推荐阅读

史海拾趣

AMS公司的发展小趣事

AMS(Austria Microsystems)公司是一家总部位于奥地利的半导体制造商,专注于开发和生产高性能的模拟半导体解决方案。以下是 AMS 公司发展的五个相关故事:

  1. 创立与早期阶段:AMS 公司成立于1981年,最初是一家从事晶圆制造的小型企业。公司创始人团队以其对半导体技术的深刻理解和创新能力,在短时间内取得了一定的成就。早期产品主要包括模拟集成电路(IC)和传感器,为医疗、汽车、工业等领域提供解决方案。

  2. 技术创新与产品扩展:随着市场需求的不断变化和技术的进步,AMS 公司不断进行技术创新,并扩展了产品线。公司致力于开发具有高性能、低功耗和小尺寸的模拟半导体产品,以满足智能手机、消费电子、工业自动化等领域的需求。公司的产品涵盖了光学传感器、环境传感器、声学传感器等多个领域。

  3. 全球化发展与市场拓展:AMS 公司通过不断拓展全球市场,加强与客户和合作伙伴的合作关系,实现了快速的业务增长。公司在欧洲、亚洲和美洲设立了多个销售办事处和生产基地,建立了完善的全球供应链和销售网络。公司的产品销售网络覆盖了全球范围,得到了国内外客户的广泛认可。

  4. 收购与合并:随着公司规模的扩大和市场竞争的加剧,AMS 公司通过收购和合并等方式不断强化自身实力。公司先后收购了一些技术领先的公司,扩大了产品线和市场份额。此举进一步提升了公司在模拟半导体领域的竞争优势,加速了公司的业务增长。

  5. 持续创新与未来展望:AMS 公司将继续致力于技术创新和产品研发,不断提升产品性能和品质水平。公司将关注新兴技术和市场趋势,积极布局未来的发展方向,包括人工智能、物联网、汽车电子等领域。同时,公司还将加强与客户和合作伙伴的合作,共同推动行业的发展和进步。

CyOptics Inc公司的发展小趣事

2013年4月,Avago宣布以约4亿美元的价格收购CyOptics Inc。这一收购标志着CyOptics的技术实力和市场地位得到了业界的进一步认可。Avago看中了CyOptics在InP光学芯片及组件领域的领先地位,希望借此增强其在新兴40G和100G企业及数据中心应用市场中的竞争力。收购完成后,CyOptics成为了Avago旗下光器件品牌,继续为市场提供高质量的光学产品。

Eon公司的发展小趣事

E.ON集团的前身可以追溯到1999年,当时德国的两个能源巨头VEBA和VIAG宣布计划在2000年合并。这一合并标志着E.ON的诞生,成为德国乃至欧洲的重要能源公司。合并后,E.ON迅速崭露头角,通过整合双方的资源和优势,迅速占据了德国及欧洲能源市场的重要位置。

诚润电子(CHEVRON)公司的发展小趣事

诚润电子(CHEVRON)自创立之初,就以技术为核心竞争力。公司在2010年正式成立,由一群热衷于电子保护元件研发的工程师创立。他们深知,在这个日新月异的电子行业中,只有不断创新,才能在竞争中立于不败之地。因此,诚润电子从一开始就专注于电子保护元件的研发和生产,通过不断的技术创新,逐渐在市场中树立起了自己的品牌。

FCT electronic公司的发展小趣事

FCT electronic公司始终坚持以客户需求为导向的服务理念。为了更好地满足客户的需求,公司不断推出新的服务模式和解决方案。例如,公司推出了定制化服务,根据客户的具体需求提供个性化的电路板解决方案;同时,FCT electronic公司还加强了售后服务体系建设,确保客户在使用过程中能够得到及时、专业的技术支持和服务。这些创新的服务模式使FCT electronic公司在客户中赢得了良好的口碑和信任。

AnalogicTech公司的发展小趣事

AnalogicTech公司成立于1997年,总部位于美国硅谷。在创立初期,公司面临资金短缺、市场竞争激烈等诸多挑战。然而,凭借创始团队对半导体技术的深刻理解和前瞻视野,AnalogicTech成功开发出一系列具有创新性的产品,逐渐在市场中站稳脚跟。

问答坊 | AI 解惑

OP AMP Circuit Collection

英文的OP电路收集大全…

查看全部问答>

DS18B20数字式温度计的设计

我要用DS18B20设计一个数字式温度计,要求是用protues仿真,并且要求可以切换测华氏度和摄氏度。知道的兄弟,赐教一下。我是单片机初学者,汇编语言掌握不错,希望大家一起探讨下,学习学习~~~知道的,邮箱我:wmywolf@qq.com…

查看全部问答>

谁在玩WINCE60?发个ARMV4I版本的RIL。DLL给我啊,我的WINCE60找不到这个文件,大家帮帮忙!

谁在玩WINCE60?发个ARMV4I版本的RIL。DLL给我啊,我的WINCE60找不到这个文件,大家帮帮忙! QQ:392325349; MSN:xqhrs232@hotmail.com; email---xqhrs232@yahoo.com.cn…

查看全部问答>

如何得到程序运行的目录?

我用的是VS2008,进行wince 编程,在进行中有个问题如题,如何得到编写的程序在设备中的目录,以便在程序中向这个目录中添加文件,最好能给出简单的代码,谢谢。…

查看全部问答>

2440用TCP/IP往上位机发送文件 有些问题 新手求助

PC采用TCP&UDP测试工具接收2440发送的数据 新手求助 大家帮忙看看 问题:1.若发送内容只是一行字符的文件 只收到文件内容的第一个字符 TCP&UDP测试工具 计数显示的数 是文件字符数2倍       2.若发送分辨率640X480 600K的b ...…

查看全部问答>

F-E56CSM-V1嵌入式MODEM模块

F-E56CSM-V1嵌入式MODEM模块 简介: F-E56CSM-V1 MODEM是嵌入式串口/TTL电平双选择直流5V或3.3V供电Modem模块,为用户提供支持V.92、V.90、V.34、V.32bis及以下协议的调制解调器OEM、ODM方案。 F-E56CSM-V1 MODEM模块支持上行速率33.6Kbps和下行 ...…

查看全部问答>

STM8S103的TIM1—CH1测量PWM输入信号问题

STM8S103的TIM1—CH1测量PWM输入信号 我完全按照官方参考手册RM0016的寄存器配置 TIM1->CCMR1 = 0x01;  //置TIM1_CCMR1寄存器的CC1S=01(选中TI1) TIM1->CCMR2 = 0x02;  //置TIM1_CCMR2寄存器的CC2S=10(选中TI1FP ...…

查看全部问答>

请教C编译器问题

IAR的C编译器,总是将一些它认为无用的语句,不予编译。 但有时侯,该编译的它也没编译。 请问哪位知道如何取消C编译器的这个功能。 如果不能取消,请问该如何处置。谢谢了! 还是因为是试用版的缘故。…

查看全部问答>

【MP430共享】基于仪表总线的分布式测控系统设计

介绍一种基于仪表总线的小型分布式测控系统的设计方案。采用TI公司的仪表总线专用收发芯片TSS721A及具有极低功耗MSP430系列单片机,使系统设计大为简化。以办楼安全监控系统的设计为例进行说明。…

查看全部问答>

看到论坛卖9B96,很想要一个,说说学习计划吧

虽然M4也快出了了,但是好像不集成网络吧,9B96好像集成哦, 所以非常想学一学。 关于M3的认识很肤浅,但是大家都有一个初学的过程,希望论坛提供一个机会,俺卖个9B96去学学 学习目标: 主要是看看能不能使用到其网络和USB功能。 对于他的网 ...…

查看全部问答>