|
使用下面的例子代码,不能使SIMO和CS为低电平:
n4 p' S2 G* zvoid PSCInit(void)
) i3 _: n8 R5 G, \$ L{ a$ E! E g. `" V- ~$ F2 U7 m- |
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 t- n1 B% b: x4 }7 _, M/ Z& u7 u" L: a}, ^# G5 J* o' x: t5 @3 g; C
1 c% d( W. F$ Y* {2 R! m9 Z/ ~' J
void GPIOBankPinMuxSet(void)" V8 s% @. |) g8 L$ \- W
{& m2 c" ?* u# {2 q2 d( j) h
// DRDY ------------ GPIO6[14] -- 111
4 Q; ?) Z8 H) r" |3 f4 D5 ` // SPI1_CLK ------------ GPIO2[13] -- 46) I/ n1 I1 E- [3 j0 P
// SPI1_SOMI------------ GPIO2[11] -- 44
0 F& f: `, E, f& z. h // SPI1_SIMO------------ GPIO2[10] -- 438 Z. z+ E- J; e/ @8 H
// SPI1_CS2 ------------ GPIO1[0] -- 17
! a; a0 @: y0 U, d // SPI1_CS3 ------------ GPIO1[1] -- 183 K- L0 L5 h; I$ ^6 d
1 y5 t+ \# E' u/ l w/ [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);# k+ q- n$ \0 h' q( S e4 e( }$ B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
3 x) f4 V! [3 I5 j$ k3 Q6 d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, y! c3 x0 t4 @2 J' z, C Y$ l% l
/ ?/ C1 _$ Y F' O //DRDY
. s' d z* v' g2 \. {. h& u GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* A, U5 H% E7 Q, { // CS2,CS3" q: n9 n3 C* ]1 G7 w0 u$ x, T0 B
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
" r' ?! s, ^$ u% o! r GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3/ a9 b* Q; l* ^% O7 p& _
//SIMO
0 H" M3 a8 v! e" J7 r GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
% ]4 j' v; F1 X. l0 \5 K8 x //SOMI
- u) q7 U% F, x' h GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ D( r! o( u; [9 x) |
//CLK" w; g4 n% M2 p) M2 j" ^
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" {" n9 c$ U$ v# d: [$ k J! c. A8 \$ n9 ]
// LDAC* b, c+ H) }* K4 o5 u
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
( q7 F/ A5 Y1 [6 k( d v, { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" `( r* T, x( |+ U9 O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- J$ m; i" q- h/ {+ j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS39 E8 Z% X* H5 L7 y& h# O- t+ C
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 M* D* _1 a) _# g3 t8 @, A0 I
}5 }* f: `: F: c1 f
* v1 I9 ~! q g1 N3 k! {9 Q' f% ?
int main(void)8 X3 v0 S* a. C8 s$ x8 w) ?) `) h
{2 c9 a6 G! `% {* M
// 外设使能# R! }+ {) S" I$ j6 K+ ]
PSCInit();
; L. r) J: t: Y8 W/ T# }: @* H# K$ s( A. _
3 P9 K6 F" A$ I u7 s# K* e; i // 管脚复用配置
+ y0 q: f& i4 Y t3 Y7 G GPIOBankPinMuxSet();
( g% T S$ [6 ]$ X& M for(;;)
/ i& j; x. b* A- h. F+ H4 } {7 I2 `6 S- {1 E
SET_SCLK();//时钟正常输出
7 ]! K) |5 U3 s4 p, D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 d/ C, `( i5 ?: J) t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3* c$ x* y+ z @% d
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ i2 M" B) q" Y$ Y' o
& y! X% l o$ e z6 e) ?7 B; Q
delay(20);* l6 `3 e/ @: S& W# L! L7 \4 g
CLR_SCLK();
; a6 s8 R$ r( X: `5 S GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
6 d$ E9 V/ D7 S5 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
' ~! f2 C& P8 T1 D GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' g0 t/ q5 s3 ^: d! H
delay(20);4 ?+ p2 e; V# ~0 c
}
6 K- J5 [( S) L; K: x) Y}5 K1 e5 Y. J+ o5 y' u
|
|