论坛» 企业专区» Cypress

ce688888的项目开发进程贴

菜鸟
2013-11-21 19:59 1楼

PSoC4 开发板收到!先上图!

包装图内饰主板实验

菜鸟
2013-11-21 20:02 2楼
1.1实验目的和功能 1)测试PSoC4内部的ADC性能 2)使用内部的PWM模块,模拟V/F转换,控制LED的亮度 3)使用内部的UART模块,把电压数据发送到电脑 1.2实验工具 1) PSoC4开发 2)数字电源或者电池+电位器 3)电脑 4)万能表 1.3实验总结 1)这个实验的主要目的是测试PSoC4内部的ADC,从实验过程的体验来看,模块的使用是比较方便的,我们可以直接使用软件自动生成的函数;另外,内部提供的参考源精度还是较高的,相比,板子在USB供电的情况下,使用板子上的VDD电压,精度就稍逊,但可以通过外接旁路电容来改善。 2)芯片本身在ADCPWM方面的优势较为突出,所以特别使用了这两个模块组合了一个V/F的应用,通过改变电压来改变频率的占空比,实现LED的亮度。整个功能只要几个模块的连接和简单的初始化函数的调用,实际的应用价值还是非常高的。 3)板子上有USB转串口的功能部分,可以让实验和测试更加通用和灵活,用简单的实验环境就可以体验和测试芯片的功能。 1.4实验内容 1.4.1创建项目文档 打开软件CREATOR2.2。然后在菜单栏选>>File>>New>>Project进入项目界面
我们可以直接选择图中红色框的选项,创建一个全新的项目。另外,我们还可以选择蓝色框中的选项,这些选项可以让我们直接生成对应的完整的项目。我们可以把这些项目作为例程学习
我们创建了全新的项目后,软件就已经给我们生成了相关的文件夹和文件。下图是我们完整项目的文件列表


工程概览

然后我们双击文件1TOPDESIGN.CYSCH,从文件名来看,就已经有点像我们用PROTEL来做硬件电路板的原理图文件名,其实真的是类似的,如下图

这个项目需要用ADC模块,,所以我们把“Sequencing SAR ADC”直接拖进工作区就添加成功了。然后就要对模块进行设置,模块功能比较多,自然设置的选项也比较多了。具体的设置如下图。

对其中几个需要经常修改的参数进行说明一下:

1) Sample rate:采样频率,整个值的设置会受到采样时钟和采样均值次数的限制 2) Clock source:采样时钟源,可以外部和内部 3) Sample mode:采样模式,有自动模式和硬件触发 4) Vref select:参考电压,整个会直接影响到采样精度和范围 5) Interrupt Limits:触发限制,主要用于限制触发值的范围。 ADC模块还需要配置这个设置界面
主要是配置ADC的采样位数和采样方式,添加采样通道等的功能。本实验使用了12位,差分模式。


接下来再添加两个模拟输入端口,用于输入差分的电压信号。这个实验使用差分信号是为了扩展性能更好,以后在输入端接上温度传感器电路,就可以变成一个数字温度计,其他的模拟实验都是基于这个ADC原理。然后双击刚才添加的PIN,进入对应PIN的配置界面。

然后我们再添加一个PWM模块,PWM模块的作用是根据电压值的大少来控制频率的占空比,然后反映出来的效果就是LED的亮度会随之变化。这个过程就是V/F的转换。软件提供了两种的PWM模块,一个是标准的PWM,另外一个是PWM(TCPWM mode)PWM(TCPWM mode)是一个功能更全的模块,我们就直接选用这个,另外PWM模块还需要CLOCK提供参考时钟源。下面是PWM(TCPWM mode)的配置界面。

由于我们这个实验对于频率的要求不高,所以对于PWM提供的很多功能我们就用默认就可以了,具体的功能使用可以参考《PSoC4分频模块》一文。其中要介绍一下图中的两个参数:

1) Period:这个参数是指把参考时钟细分的值。 2) Compare:这个就是类似占空比的参数,我们暂且叫占空比,其实际的原理是PWM的计数累加值与这个值比较,到达这个值就翻转。 频率模块的配置如下图参数,我们使用了1M的频率,这个频率选择没有必然的,只是在这个频率会让显示的效果比较好。最后PWM模块输出的频率F=1M/1000=1000Hz


再添加两个LED的输出端,分别接在PWM模块的两个互为反相的输出端。这部分的模块连接如下图

最后我们还需要一个串口模块,也是直接从模块栏拉入工作区。

串口的配置如下图,其实就是一个标准的串口,我们选用38400的波特率。

最后要做的就是配置管脚号了,这个管脚配置就相当于C语言的“sbit LED_G= P0^2”,但在这里我们就是通过下拉菜单选择完成。双击文件二(DESIGN04.cydwr),按照表中的参数修改就可以了。

到这个步骤,我们基本上就完成了M0和逻辑功能的配置,或者说我们已经设计好了我们实验所需要的硬件电路,然后通过菜单栏的BUILD>>GENERATE APPLICATION功能生成系统中模块需要的文件,剩下的工作就是编写MAIN.C函数。1.4.2编写函数

PSoC4的开发软件的优越之处还在于其提供完善的函数,所以在使用过程中,我们不需要去编写接口函数或者其他的功能函数,我们只需要按照我们的使用需求调用合适的函数。但在使用这个软件的时候,我们要养成一个习惯,尽量避免在功能模块提供的C文件中编写应用函数,因为在使用菜单栏的BUILD>>GENERATE APPLICATION功能时,模块是会重新生成会同时更新对应的文件的。 在编写MAIN.C函数前,推荐大家看一下刚才生成的文档,我们现在就拿文件夹《PWM_1》下的PWM_1.C来看一下(文件名跟我们添加的端口或模块是同名的) PWM_1.C下有几个函数,其中我们要用的就一下这个 void PWM_1_WriteCompare(uint32 compare) { PWM_1_COMP_CAP_REG = (compare & PWM_1_16BIT_MASK); } 上面的函数是用于设置PWM波形的占空比,通过对相应的 寄存器 写入需要的占空比数值,这个函数所实现的功能也能在刚才配置PWM的界面上实现。硬件生成过程会把我们需要用到的端口函数都准备好了,我们只要懂得使用就是好,十分方便。 MAIN.C函数如下: void main() { uint8 channel = CHANNEL_1; int16 ADC_Val[4u]; int16 mVolts; int16 previousValue = 0; UART_Start(); //串口初始化 CyGlobalIntEnable; //终端使能 ADC_Start(); //ADC使能 ADC_IRQ_StartEx(ADC_ISR_Handler); //ADC终端使能 ADC_StartConvert(); //ADC转换 Clock_1_Start(); //打开PWM时钟 PWM_1_Start(); //打开PWM模块 PWM_1_WriteCompare(500); //设置开始的占空比是50% for(;;) //死循环 { if(dataReady == 1u) //判断ADC数据是否转换完成 { ADC_Val[CHANNEL_1] = ADC_GetResult16(CHANNEL_1); //获取ADC转换数据 mVolts = ADC_CountsTo_mVolts(channel, ADC_Val[CHANNEL_1]); //转换为相应的电压值 if((previousValue != mVolts)) //判断采样数据跟上次数据是否一致,否的话发送数据 { SendChannelVoltage(channel, mVolts); //串口发送电压值 previousValue = mVolts; //把这次的数值保留,作为下次的比较值 PWM_1_WriteCompare(mVolts); //把电压值赋给PWM作为占空比值,LED亮度改变。 } dataReady = 0u; } } } 整个实验的流程就在MAIN.C函数中很好的体现出来了。更详细的代码可以直接参考 工程 文档。然后就是编译和 下载 1.4.3编译下载 通过菜单栏的BUILD>>BUILD文件名”或者shift F6编译工程。 通过菜单栏的DEBUG>>PROGRAM”或者ctrl F5下载工程。下载完毕,就连接相关的测试工具进行实验。 1.4.4仿真 软件和硬件都支持在线仿真,所以我们可以尝试一下。通过菜单栏的DEBUG>>DEBUG”或者F5进入DEBUG。仿真这个环节跟其他的开发工具都是类似的,使用很方便。 1.4.5上电实验 在上电前,我们要先连接好串口跳线和电源输入端。 1)串口跳线:PSoC4(P0.4)------PSoC5LP(P12.7) PSoC4(P0.5)------PSoC5LP(P12.6) 2) ADC检测的电源输入端:电源正(P2.0,电源负(P2.1 连接好后如下图,不需要其他的外围电路。


我们在设置ADC的参考电压时选择了1.024V,所以检测的有效范围0~1.024V,大家在做实验的时候可以用可调电源,或者更通用的1.5V的电池加上一个电位器。我们实验就选用了可调电源。

USB线连接电脑和PSoC4板子,现在电脑上多了一个串口,记下串口号,然后打开实验用的电脑软件。如下图,现在发现的串口号是COM14,然后按“打开串口”按键,接通可调电源,我们就可以看到软件显示出当前的电压值。调节可调电源,显示的电压随之变动。通过跟数字电压表做对比,检测的精度还是比较好的,误差在10mV内。我们还可以换取其他的参考电压源,但我们要注意参考电压源的精度会直接影响ADC的输出值。


1.4.6使用比较

1)设置比较直观 软件提供了很多配置的界面和功能选项,这些功能都可以让用户非常直观的了解到这个芯片系统的构成,而且很容易上手,这点非常好,更可以说明软件的功能强大。但有的朋友可能比较习惯直接用代码来配置功能,其实都是可以的。现在我们举个例子来说明一下。 文件夹《LED_R》下的LED_R.C有这么一段函数,是用来配置端口的模式的 void LED_R_SetDriveMode(uint8 mode) { SetP4PinDriveMode(LED_R__0__SHIFT, mode); } 其实上面的一段代码可以通过软件提供的选项来实现,刚才我们在配置PIN功能的时候有这么一个界面,在这个界面我们也可以配置相同的功能。 所以软件提供的强大的功能,能够方便我们在编程时候了解芯片的性能,在时候的工程中,我们还是需要去了解芯片的内部寄存器和原理。 3)信号采集和电机驱动较为突出 ADC的使用比较方便,另外,芯片还提供了内部的运放,在信号采集,调整,转换溶于一体,减小外部器件和干扰源。另外内部还有PWM定时器,分频器等模块都非常适合电机应用场合。 4) M0+可编程逻辑器件

PSoC4芯片整体来看仿佛就是M0和可编程逻辑器件的组合体,内部的PWM,定时器,分频器等模块都是用逻辑来动态重组,这个是很灵活的应用。从众多的模块来看,内部的逻辑资源还是十分充足的,体现出十分强大的灵活性。


视频教程地址如下

http://v.youku.com/v_show/id_XNjIyNzAzNDUy.html

设计教程

PDF文件教程

PSOC4虚拟电压计教程.pdf

上位机软件

电压计上位机.zip

工程的打包

Creator工程.rar

菜鸟
2013-11-21 20:03 3楼
先占座
菜鸟
2013-11-21 20:03 4楼

1:首先相关资料分享:

关于RTOS设计及教程

FreeRTOS_CNN.pdf

FreeRTOS_在_STM32_的移植.pdf

FREERTOS+的官方移植文档.pdf

FreeRTOS入门手册_中文.pdf



2:开发板配置说明

首先我们来看CY8CKIT-042_Kit_Guide.pdf中PSoC4的开发板结构,在开发板中,PSoC 5LP作为PSoC4的编程器和调试器(Using the Onboard PSoC 5LP Programmer and Debugger)

PSoC 5LP功能

具体说明如下:

PSoC 5LP与PSoC4的连接关系

对于Cortex-M0来讲因为flash和ram空间较小,无法实现rtos操作系统的运行,因此,我们选择使用开发板上的PSoC 5LP来运行FreeRTOS,如下节所示。


3:操作系统的开发与编译

首先需要我们下载FreeRTOS,其中FreeRTOS最新版本7.5.3已经支持PSoC5的移植和匹配。下载地址如下:

www.freertos.org

03-FreeRTOS网址

其中FreeRTOS软件包在

http://sourceforge.net/projects/freertos/files/

下载FreeRTOS-7.6.0并解压到某个硬盘目录下,如e:\workshop\下面


下面启动Creator

01-启动creator.JPG

打开FreeRTOS的PSoC 5的操作系统demo工程

E:\workshop\FreeRTOSV7.6.0\FreeRTOS\Demo\CORTEX_CY8C5588_PSoC_Creator_GCC\FreeRTOS_Demo Workspace.cywrk

我们看到了FreeRTOS工程中PSoC 5LP的内部逻辑连接关系:

PSoC 5LP内部逻辑设计.JPG

我们需要选择开发板上对应的芯片打开工程中的cydwr的系统设置如下图:

芯片选择

选择开发板对应的芯片型号

PSoC 5LP型号选择

然后编译工程及操作系统:

操作系统编译

最后是对PSoC 5LP的外部引脚资源进行合理配置,使其能够在操作系统运行中通过LED指示灯,指示操作系统的运行;

外部资源配置

最后操作系统开发就完成了。

下面讲解一下,FreeRTOS的功能组织结构:

软件工程组织.JPG


5:相关代码和工程

操作系统实现及Creator下的工程文件

FreeRTOSV7.5.3.zip


讲解结束,谢谢各位观赏


高工
2013-11-21 20:23 5楼
没有个项目的详细介绍?
菜鸟
2013-11-21 20:24 6楼
正在写。刚上来,先别急!
专家
2013-11-21 21:28 7楼
楼主 图片能重新上传不 带上EEPW的logo该多好
菜鸟
2013-11-22 16:01 8楼
正在整理其它工程资料,来不及重新上传了,不影响大家观看,希望对大家有帮助!谢谢大家!
助工
2013-11-26 22:03 9楼
上传也要把EEWORD的logo去掉把,复制过来大家都会,还不如直接给个网址自己看,自己操作一遍那才好,验证一遍也好。
专家
2013-11-26 22:57 10楼
这个可能是楼主在其他地方发的呢 但最好是不带其他网站的logo图片
共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]