|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
1 P! i$ E% {3 |# Jvoid PSCInit(void)
& e g) R) P% X( k9 B{4 o% Z( i2 j( V4 X1 B" @0 A
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 E6 J, P* H9 Y3 H# O/ H/ a# ~* ~
}4 Q" D2 N( `1 ]' H( z0 q
9 k( b2 ^# l! O1 Z
void GPIOBankPinMuxSet(void)
- n# c, }; m& ?/ l2 K; {6 e{' w+ l Y' X5 d; S
// DRDY ------------ GPIO6[14] -- 111
: l; O2 w3 ]5 ^ // SPI1_CLK ------------ GPIO2[13] -- 46
1 T8 k/ R- F! t& Y- x+ ?5 u: e9 Z) ? // SPI1_SOMI------------ GPIO2[11] -- 444 I( m7 U3 s$ t7 [( m; l
// SPI1_SIMO------------ GPIO2[10] -- 43
- k, M0 v* h( [6 Q( U0 k0 E // SPI1_CS2 ------------ GPIO1[0] -- 17
) k# Q( Y* l- b% b // SPI1_CS3 ------------ GPIO1[1] -- 18
* ^! ~, k e' q5 X- @
8 |0 N0 _' ]. `9 ~3 z5 \4 p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" D- ~7 f0 f8 ^
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
) S. [7 ] n. `3 `" L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( r9 Z" n; m9 t/ C, z
" W8 U& G- U P //DRDY6 Q& L {& }1 n' H7 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 l$ T. u& n* H/ k3 R; { // CS2,CS3+ E, Y. }2 O2 i9 N& z& B
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! W6 k4 ]" g5 r5 c( x% b, x
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
4 D& ^2 s$ `% u ?7 f6 Y# U4 ? //SIMO* z8 o( E# @3 O5 `! I3 }! F2 L
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO& P& j4 Q; r% a9 n7 Y; Z3 ^
//SOMI5 q @ {* C: {; m
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI/ q, y8 Q, t+ t8 w
//CLK6 `0 [6 T6 v; { \: y( a9 V# u
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
* S3 K) ]' B( I W. r% K
, K; F8 c" o: C1 O4 {$ s9 A1 s4 ~ // LDAC
" T8 t+ t7 G- C* B/ r ]" J GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK) _8 N4 z. Z' O# [# B. ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN* A. `$ \ k" a# U6 z+ i
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 D7 {( j* L( v F! s GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" U5 z2 `7 e. J: r- ~
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
, y/ P( K# D) d W. ]}1 J d$ Y* U& F) i! p `* T' T
. f" F- F# Q2 w5 c1 Sint main(void)# t" G5 e% ^$ d5 Z# _1 ?+ E
{
* _; L% k; y4 C% U, ` // 外设使能$ Q1 Y- a/ C: R4 f7 P
PSCInit();, @. r# P3 Y) f4 W4 Z- z+ P2 f
$ I* G9 n$ I. Y" z
9 O+ { z8 [! Q; A // 管脚复用配置
8 o6 K9 M& I, N$ R GPIOBankPinMuxSet();
+ C& A# ~5 ^, w for(;;)
/ Z* S. x# I2 ` {
6 L+ }' [$ _# h* f8 D/ D5 J' p( ^ SET_SCLK();//时钟正常输出% L. Q: c1 G6 q8 H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# E) r1 D, O( }, b( ~6 k' U/ S
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* R) r P0 H. T" ^6 N( a; C2 N
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" S8 ?# _5 B" m( L( e2 V k. [
. ]# I. J" J7 K9 G/ w/ M& o7 ]
delay(20);
$ ^; Z# `* ^& A$ K/ {# s; R5 ~/ @ CLR_SCLK();
! ^* Q( L! q6 q4 a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
$ h$ x6 Q. X" z- T/ I! ?1 F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
% {# n0 O4 O$ b8 S- d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 }3 u7 a( [/ a. C# l1 f1 a delay(20);8 I$ W9 g% C8 Y1 G7 ~* w% g
}) X" x% C }$ M7 M7 j
}- e; q0 ~. v- f- O Q8 m
|
|