主题中讨论的其他器件:CC3100、 MSP-EXP430F5529LP、 MSP-EXP430FR5969、 MSP430FR5969、MSP430FR6989
我一直在 CC3100论坛上与 Michael 进行发帖和对话。 他建议我也尝试这个论坛。
到目前为止、我还无法成功使 CC3100与 FR6989 Launch Pad 配合使用
-同样、我的终极目标是:将 CC3100 WiFi 添加到我的 FR6989产品中
-难以置信 TI 或某些用户没有工作示例。
-我相信很多人都非常感谢您发布了一封使用 CC3100 - FR6989的 WiFi 电子邮件
CC3100_SDK_1.3.0、CCS_8.2.0、编译器 TIv18.1.3.LTS
-完美地处理 F5529示例
-我成功地将我的 F5529产品移植到了最新的 SDK、CCS 和编译器,与我的 F5529产品完美配合
-完美地使用 FR5969示例
-到目前为止、我无法成功将其移植到端口、以使 CC3100与 FR6989 Launch Pad 配合使用
-我使用了 FR6989开箱即用示例(启动非常简单的应用程序),并尝试通过添加 FR5969示例中的文件将 CC3100 WiFi simplelink 添加到其中
-如 SDK 下载文档中所述:CC3100_SDK 移植指南可在 cc3100-sdk/docs/simplelink_api/html/index.html 找到:
-根据我创建了自己的 user.h 本地副本的说明(未链接到 CC3100_SDK 库、或者由于它是一个链接文件、它将更改基本文件并中断所有其他示例和项目)
-我复制了原始 user.h 中的所有正文、但随后不得不更改副本以链接到1)板、2) CLI_UART、3) SPI 的新副本
- UART 和 SPI 的引脚和实例对于每个 LaunchPad 都是不同的(请参阅下表)
-我创建了 boardFR6989.C 和.h、cli_uartFR6989.c 和.h、spiFr6989.c 和.h
-在这些文件中,我更改了引脚编号和中断矢量以匹配 FR6989
-到目前为止:我有一个干净的编译器、它运行、我可以单步执行、通过观察寄存器可以看到它写入反向通道 UART 缓冲器、但反向通道 UART 上不显示字符、WiFi 不工作
此帖子提供了指向 wiki 页面的链接、该页面为这些 LaunchPad 提供了有效的 UART。
FR6989 UART 工作正常、代码编写和记录得很好
https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/465550?help-MSP430FR6989-launchpad-deverlopment-UART
http://processors.wiki.ti.com/index.php/MSP_UART
myUART_05_example.zip …适用于 FR6989
myUART_5529.zip myUART_5529.zip (MSP-EXP430F5529LP LaunchPad)
myUART_5529.zip myUART_5969.zip (MSP-EXP430FR5969 LaunchPad)
我的下一步是获取适用于 FR6989的有效 myUART_05_example.zip、现在尝试向其中添加 simplelink、因为至少反向通道 UART 已经证明可以正常工作。
我将发布从 FR5969 CC3100示例…中修改的 cli_uartFR6989.c 代码、以防有人发现容易明显的错误
-为便于其他用户使用、这是每个 CC3100 WiFi 引脚到相应 LaunchPad 引脚编号的映射
-我使用了选项卡,所以我希望在发布后,它的格式仍然正常
CC3100 CC3100 FR5969 FR6989 F5529
升压器 左侧 左侧 左侧
打包 外行 外行 外行 外行
VCC 3.3V P1.1 3.3V 3.3V 3.3V 3.3V 3.3V
未使用 P1.2
UART1_TX P1.3 P2.6 Rx P4.3 Rx P3.4 Rx
eUSI_A1 USCI_A0 USCI_A0
UART1_RX P1.4 P2.5 Tx P4.2 Tx P3.3 Tx
eUSI_A1 USCI_A0 USCI_A0
NHIB P1.5 P4.3 P3.2 P1.6
未使用 P1.6
SPI CLK P1.7 P2.2 P1.4 P3.2
eUSCI_B0 eUSCI_B0 eUSCI_B0
未使用 P1.8
未使用 P1.9
未使用 P1.10
CC3100 CC3100 FR5969 FR6989 F5529
升压器 左侧 左侧 左侧
包装 内行 无收割台 内行 内行
Pack 内行 无收割台 电路侧 电路侧
5V P3.1 无插头 5V
GND P3.2 无接头 GND
未使用 的 P3.3
未使用 P3.4
未使用 P3.5
未使用 P3.6
未使用 P3.7
未使用 的 P3.8
未使用 P3.9
未使用 P3.10
CC3100 CC3100 FR5969 FR6989 F5529
升压器 右侧 右侧右侧 右侧右侧右侧右侧
包装 外行 外行 外行 外行
GND P2.1 GND GND GND GND GND
IRQ P2.2 P1.2 P2.1 P2.0
SPI CS P2.3 P3.0 P1.5 P2.2
未使用 的 P2.4
nRST P2.5 RST RST RST RST RST
SPI_MOSI P2.6 P1.6 P1.6 P3.0
eUSCI_B0 eUSCI_B0 eUSCI_B0
SPI_MISO P2.7 P1.7 P1.7 P3.1
eUSCI_B0 eUSCI_B0 eUSCI_B0
未使用 的 P2.8
未使用 P2.9
未使用 P2.10
CC3100 CC3100 FR5969 FR6989 F5529
升压器 右侧 右侧右侧 右侧右侧右侧右侧
包装 内行 无收割台 内行 内行
Pack 内行 无收割台 电路侧 电路侧
未使用 P4.1
未使用 的 P4.2
未使用 的 P4.3
UART1_CTS P4.4 无接头 P3.6 P1.4
UART1_RTS P4.5 无接头 P3.7 P1.3
未使用 的 P4.6
NWP_Log_TX P4.7 无接头 P1.3 P4.3
NWP_Log_TX P4.8 无接头 P3.0 P4.0
未使用 P4.9
未使用 P4.10
启动 焊盘 FR5969 FR6989 F5529
Lnch Pad Bck-ch-UART Rx P2.0 P3.4 P4.4
eUSCI_A0 USCI_A1 USCI_A1
Lnch Pad Bck-ch-UART Tx P2.1 P3.5 P4.5
eUSCI_A0 USCI_A1 USCI_A1
Lnch Pad Bck-ch-UART RTS P4.1 P3.1 P6.7
Lnch Pad Bck-ch-UART CTS P4.0 P3.0 P1.7
//LH 10-11-2018这是我从 TI Michael Reymond 收到的用于回复我的帖子的 CLI-UART
//我使用它作为基础来尝试为 FR6989创建工作版本
//到目前为止,此代码编译干净、运行,但不会写入反向通道 COM 端口
/*
* cli_uart.c - msp430fr5969 launchpad 应用 UART 接口实现
*
//
//
//! \addtogroup cli_uart
//! @{
//
//
#include
#include
#include
//FR5969使用 UCA0、但 FR6989使用 UCA1
//#define UCA0_OS 1 //* 1 =过采样模式、0 =低频率模式*
//#define UCA0_br0 17 // UCA0BR0寄存器的值*/
//#define UCA0_BR1 0 // UCA0BR1寄存器的值*/
//#define UCA0_BRS 0 // UCA0MCTL 寄存器中 UCBRS 域的值*/
//#define UCA0_BRF 6 // UCA0MCTL 寄存器中 UCBRF 域的值*/
#define UCA1_OS 1 /* 1 =过采样模式、0 =低频率模式*/
#define UCA1_br0 17 /* UCA1BR0寄存器的值*///波特率为零
#define UCA1_BR1 0 /* UCA1BR1寄存器的值*/ //波特率1
#define UCA1_BRS 0 /* UCA1MCTL 寄存器中 UCBRS 域的值*/
#define UCA1_BRF 6 /* UCA1MCTL 寄存器中 UCBRF 域的值*/
#define ASCII_ENTER 0x0D
//LH 10-16-2018添加了下一行内容、因为代码跳过该行、似乎未定义
#define _use_cli_ 1.
#ifdef _use_cli_
unsigned char * g_ucUARTBuffer;
int cli_have _cmd = 0;
#endif /*_use_cli_*/
/*!
\brief 应用 UART 中断处理程序
\param[in] 无
\不返回任何内容
注意
警告
*
//TI 帮助发布 myUART_05-FR6989显示 P2.0 P2.1适用于 EUSCI_A0_BASE
//查看 LaunchPad、发现它使用的是 P3.4和 P3.5、因此使用的是 EUSCI_A1
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
//#pragma vector=USCI_A0_vector
//_interrupt
//#Elif defined (__GNU__)
//__attribute__((中断(USCI_A0_Vector))
//#endif
//void UART_ISR (void)
//{
// 开关(__even _in_range (UCA0IV、0x08))
// {
// 情况0:中断; //向量0 -无中断*/
// 案例2: //矢量2 - RXIFG */
//#ifdef _use_cli_
// * g_ucUARTBuffer = UCA0RXBUF;
// if (* g_ucUARTBuffer == ASCII_ENTER)
// {
// cli_have _cmd = 1;
// * g_ucUARTBuffer = 0x00;
// __BIC_SR_REGISTER_ON_EXIT (LPM0_Bits);
// }
// g_ucUARTBuffer++;
//#endif /*_use_cli_*
// __no_operation();
// 中断;
// 案例4:中断; //向量4 - TXIFG */
// 默认:break;
// }
//}
//LH 10-16-2018将使用 A1矢量
#pragma vector=USCI_A1_vector
_interrupt
#Elif defined (_GNU_)
__attribute__((中断(USCI_A1_vector))
#endif
空 UART_ISR (空)
{
switch (__evo_in_range (UCA1IV、0x08))
{
情况0:中断; /*向量0 -无中断*/
情况2: /*向量2 - RXIFG */
#ifdef _use_cli_
*G_ucUARTBuffer = UCA1RXBUF;
if (* g_ucUARTBuffer == ASCII_ENTER)
{
cli_have _cmd = 1;
*G_ucUARTBuffer = 0x00;
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);
}
G_ucUARTBuffer++;
#endif /*_use_cli_*/
__no_operation();
中断;
情况4:中断; /*向量4 - TXIFG */
默认值:break;
}
}
内部
cli_read (unsigned char * pBuff)
{
if (pBuff =NULL)
返回-1;
#ifdef _use_cli_
cli_have _cmd = 0;
G_UARTBuffer = pBuff;
//FR5969使用 UCA0、但 FR6989使用 UCA1
// UCA0IE |= UCRXIE;
UCA1IE |= UCRXIE;
_bis_SR_register (LPM0_bits + GIE);
while (cli_have _cmd =0)
;
//FR5969使用 UCA0、但 FR6989使用 UCA1
// UCA0IE &=~UCRXIE;
UCA1IE &=~UCRXIE;
return strlen((const char *)pBuff);
#else /*_use_cli_*/
返回0;
#endif /*_use_cli_*/
}
内部
cli_Write (unsigned char * inBuff)
{
if (inBuff =NULL)
返回-1;
#ifdef _use_cli_ //LH10-15-2018、它只是跳过这一步、所以请进行注释、因此在调用时必须执行代码
unsigned short ret、usLength = strlen ((const char *) inBuff);
RET = usLength;
while (usLength)
{
//FR5969使用 UCA0、但 FR6989使用 UCA1
// while (!(UCA0IFG & UCTXIFG));
// UCA0TXBUF =*inBuff;
while (!(UCA1IFG & UCTXIFG));
UCA1TXBUF =*内 Buff;
usLength --;
inBuff++;
}
返回(int)转塔;
//#else /*_use_cli_*/
// 返回0;
#endif /*_use_cli_*/
}
无效
CLI_Configure (void)(配置(空))
{
#ifdef _use_cli_//LH 10-15-2018 5:23PM 主调用 config 时、它会跳过这一点、原因是什么? 因此、请注释掉 IF
PM5CTL0 &=~LOCKLPM5; /*禁用 GPIO 上电默认高阻抗模式
激活先前配置的端口设置*/
//FR5969 UART 引脚 P2.0 = Tx、P2.1 = RX
//TI 帮助发布 myUART_05-FR6989显示 P2.0 P2.1适用于 EUSCI_A0_BASE
//因此、让我尝试这些引脚、因为上面的中断矢量是针对 EUSCI_A0的
//查看 LaunchPad、发现它使用的是 P3.4和 P3.5、因此使用的是 EUSCI_A1
// P2SEL1 |= (BIT0 + BIT1); // P2.0、1 = USCI_A0 TXD/RXD
// (在 P2.0和 P2.1上设置 UART 引脚) */
// P2SEL0 &= ~(BIT0 + BIT1);
// UCA0CTLW0 |= UCSWRST; //将状态机置于复位状态*/
// UCA0CTL0 = 0x00;
//
// UCA0CTLW0 = UCSSEL_SMCLK + UCSWRST; //使用 SMCLK,保持复位*/
// /* 8MHz/115200 =0x45 (请参阅用户指南)*/
// UCA0BRW = 0x341; // 8MHz/9600 = 833 = 0x341 (请参阅用户指南)*/
//
// UCA0MCTLW = 0;
//
// UCA0CTLW0 &=~UCSWRST; //初始化 USCI 状态机*/
//FR6989 UART 引脚 P3.4 = Tx、P3.5 = RX
//TI 帮助发布 myUART_05-FR6989显示 P3.4 P3.5适用于 EUSCI_A1_BASE
P3SEL1 |= (BIT4 + BIT4); /* P2.0、1 = USCI_A0 TXD/RXD
(在 P2.0和 P2.1上设置 UART 引脚) */
P3SEL0 &= ~(BIT4 + BIT5);
UCA1CTLW0 |= UCSWRST; /*将状态机置于复位状态*/
UCA1CTL0 = 0x00;
UCA1CTLW0 = UCSSEL_SMCLK + UCSWRST; //使用 SMCLK,保持复位*/
/* 8MHz/115200 =0x45 (请参阅用户指南)*/
UCA1BRW = 0x341; // 8MHz/9600= 833 =0x341 (请参阅用户指南)*/
UCA1MCTLW = 0;
UCA1CTLW0 &=~UCSWRST; /*初始化 USCI 状态机*/
/*在 UART 上禁用 RX 中断*/
//FR5969使用 UCA0、但 FR6989使用 UCA1
// UCA0IFG &=~(UCRXIFG | UCRXIFG);
// UCA0IE &=~UCRXIE;
UCA1IFG &=~(UCRXIFG | UCRXIFG);
UCA1IE &=~UCRXIE;
#endif /*_use_cli_*/
}
洛恩