- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用微 Controller 通过 SPI 进行数据通信。因此,我首先选择了带有 PIC32MX470F512L 的 Microchip USB Starter Kit III 模块。我尝试了几种方法对其SPI进行编码,但在示波器上只能看到时钟信号SCK。
然后,我使用带有 PIC32MX360F512L 的 Microchip 入门工具包 I 尝试了相同的代码(只是针对新的 PIC 调整了几行代码)。一切都完美运行。所以,我不明白为什么 USB Starter Kit III 不能用于 SPI 通信?
我给你用于测试 SPI SDO &/SS 的代码。
#define _SUPPRESS_PLIB_WARNING
#include <stdio.h>
#include <stdlib.h>
#include <plib.h>
#include <p32xxxx.h>
#include <xc.h>
#include <peripheral/spi.h>
// DEVCFG2
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider (12x Divider)
#pragma config FPLLMUL = MUL_20 // PLL Multiplier (24x Multiplier)
#pragma config FPLLODIV = DIV_1 // System PLL Output Clock Divider (PLL Divide by 256)
// DEVCFG1
#pragma config FNOSC = PRIPLL // Oscillator Selection Bits (Primary Osc w/PLL (XT+,HS+,EC+PLL))
#pragma config FSOSCEN = OFF // Secondary Oscillator Enable (Disabled)
#pragma config IESO = ON // Internal/External Switch Over (Enabled)
#pragma config POSCMOD = HS // Primary Oscillator Configuration (HS osc mode)
#pragma config OSCIOFNC = OFF // CLKO Output Signal Active on the OSCO Pin (Disabled)
#pragma config FPBDIV = DIV_1 // Peripheral Clock Divisor (Pb_Clk is Sys_Clk/8)
#pragma config FCKSM = CSDCMD // Clock Switching and Monitor Selection (Clock Switch Disable, FSCM Disabled)
#pragma config WDTPS = PS1048576 // Watchdog Timer Postscaler (1:1048576)
#pragma config FWDTEN = OFF // Watchdog Timer Enable (WDT Disabled (SWDTEN Bit Controls))
// DEVCFG0
#pragma config DEBUG = OFF // Background Debugger Enable (Debugger is Enabled)
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select (Communicate on PGEC1/PGED1)
#pragma config PWP = OFF // Program Flash Write Protect (Disable)
#pragma config BWP = OFF // Boot Flash Write Protect bit (Protection Disabled)
#pragma config CP = OFF // Code Protect (Protection Disabled)
int main(void) {
TRISGbits.TRISG6=0; //SCK2
TRISGbits.TRISG7=1; //SDI2
TRISGbits.TRISG8=0; //SDO2
TRISGbits.TRISG9=0; //SS2
OpenSPI2(SPI_MODE16_ON|SPI_SMP_ON|MASTER_ENABLE_ON|SEC_PRESCAL_5_1|PRI_PRESCAL_16_1, SPI_ENABLE);
int data;
PORTGbits.RG9 = 1;
while(1)
{
PORTGbits.RG9 = 0;
putcSPI2(0xaaaa);
data=getcSPI2();
PORTGbits.RG9 = 1;
}
return 0;
}
谢谢
最佳答案
引脚映射
你们做管脚映射吗?它不会出现在您发布的代码中。
您需要使用 PPS(外围引脚选择)将引脚分配给 SPI 模块。
OpenSPI 是一个库函数,但还需要它与引脚外设选择(PPS)进行引脚映射
要点 12.3.1 http://ww1.microchip.com/downloads/en/DeviceDoc/60001120F.pdf
引脚状态(模拟/数字)
检查您的引脚是否处于(默认)模拟状态。如果该引脚还具有模拟 (AN) 功能,则默认状态为模拟,您无法控制该引脚。您需要设置寄存器ANSELx(或AD1PCFG)来设置管脚。
在芯片PIC32MX470F512L中,您使用的引脚(RG6-9)也具有模拟功能(AN):
10 AN16/C1IND/RPG6/SCK2/PMA5/RG6
11 AN17/C1INC/RPG7/PMA4/RG7
12 AN18/C2IND/RPG8/PMA3/RG8
14 AN19/C2INC/RPG9/PMA2/RG9
第 7 页 http://ww1.microchip.com/downloads/en/DeviceDoc/60001185F.pdf
模拟引脚第 12.2.5 节 http://ww1.microchip.com/downloads/en/DeviceDoc/60001120F.pdf
关于c - 具有 SPI 模式的 Microchip 入门工具包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42644395/
也许对我来说,这是一个很小但很难解决的问题。如果有人能把我引向正确的方向来解决这个问题,我将不胜感激。。我正在尝试构建大约10年前的文件,但收到此错误的是MicroChip Studio 7.0.13
我正在使用一对 MRF24J40 radio 芯片来让一个 PIC32 微 Controller 板通过射频传输与另一个微 Controller 板进行通信。我的所有代码都可以正常编译,但我不断收到与
我正在编写与外部 RF 芯片的 SPI 通信。微 Controller 为Microchip的型号PIC24FJ64GA102。 我想使用 SPI 的增强缓冲模式。 问题:从接收缓冲区中取出接收到的字
我正在努力让 PIC16F1829 进入休眠模式。该装置消耗大约 18mA,而数据表在深度 sleep 模式下引用 20nA。谁能帮忙? 根据数据表,我必须执行以下操作“WDT、BOR、FVR 和 T
我正在使用 Microchip C18 编译器,并且在发生中断时,我在 ISR 代码开始运行之前遇到了相当长的延迟。 作为一个实验,这是我的主要功能: while(1) { LATAbits.
按下按钮后我无法跳出 if 语句。按钮激活继电器,按下按钮则关闭继电器。 这是我的完整代码:我是 C 新手,因此非常感谢所有评论和建议。 #include "mcc_generated_files/
我正在为 ARM Cortex M4 使用 ASF4 API hal_timer。我正在使用定时器驱动程序对数据序列进行计时。为什么不存在重置功能?我在 TIMER_TASK_ONE_SHOT 模式下
我刚开始学习用于 pic 编程的 C,我正在查看其他人的代码和编译器提供的包含文件,尤其是基础代码(xc.h、pic.h、pic特定的标题...),我看到了这个结构(它在 pic.h 中找到) #de
Microchip 发布具有私有(private) MLDP 配置文件的 RN4020 BT LE 芯片已经有好几年了。然而,到目前为止,仍然没有公开可用的 iOS 示例源代码可用,尽管他们在 App
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
当我遇到一大堆看起来像这样的结构时,我正在挖掘一些与 PIC 微 Controller 相关的头文件: typedef struct tagPORTDBITS { unsigned RD0:1;
我试图在自由模式下使用 xc8 编译器和 pic16f876a 的项目在库中声明一个类。但 xc8 编译器似乎不接受或编译类... 这是真的吗?如果没有,有人可以发布一个例子吗? 谢谢!! 最佳答案
我想在proteus中模拟我做的一个程序,但是它是在linux上使用MPLABX编译的,proteus运行在虚拟机和windows XP中。我的电脑硬件较少,所以尝试在虚拟机上运行 MPLABX 对我
我正在尝试创建一个包含指向常量数组的指针的数组。我在 MPLABX 中使用 C30 V3.31,我正在尝试使用 PIC24FJ128GA310 为我的 LCD 创建一个分段图。这个想法是让所有的 LC
我问这个只是出于好奇。 我正在使用 Microchip C30 编译器为 PIC24F 开发 EEPROM 驱动程序代码。在此期间,我使用了 C30 内置函数,例如__builtin_tblwtl()
我需要让一台设备与两台服务器通信。 Microchip TCP/IP 协议(protocol)栈是否可行? 最佳答案 您可以(也应该)阅读文档,或咨询 Microchip 支持人员。 Microchi
有人可以建议一个用于 Microchip PIC18 处理器的 Modbus RTU 从站的开源实现吗?我正在寻找用于 RS-232/RS-485 的 Modbus RTU 实现,但也欢迎 Modbu
我在 8 位微 Controller 上使用 Microchip 的免费 TCP/IP(4.55 版)堆栈。 我正在尝试在不使用 asm("RESET") 进行全板重置的情况下重置堆栈。 关于如何重新
我想使用微 Controller 通过 SPI 进行数据通信。因此,我首先选择了带有 PIC32MX470F512L 的 Microchip USB Starter Kit III 模块。我尝试了几种
我在使用 PIC18F67J60 的 Microchip C18 编译器时遇到了这个奇怪的问题。 我创建了一个非常简单的函数,它应该返回较大字符串中子字符串的索引。 我不知道出了什么问题,但该行为似乎
我是一名优秀的程序员,十分优秀!