|
|
使用下面的例子代码,不能使SIMO和CS为低电平:/ W: o1 G5 a& C0 W5 N# c; W
void PSCInit(void) i: x0 i9 s$ I3 ~
{
, `8 i& t6 s' W8 C6 s7 Q6 ` PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 z4 T& a( A" J1 E( V* h6 U1 y}
$ f8 |! l( B( g2 p; X4 e- \4 R% s' v
void GPIOBankPinMuxSet(void)8 `. k4 P2 Y- y% @! O2 D
{- K r b5 w; L ?
// DRDY ------------ GPIO6[14] -- 1115 D) P( V% Y- |9 ^8 A
// SPI1_CLK ------------ GPIO2[13] -- 46
. z7 u* v$ o( a! y) n // SPI1_SOMI------------ GPIO2[11] -- 44$ d5 N8 z2 ~" P
// SPI1_SIMO------------ GPIO2[10] -- 43
: D' c4 P/ |- [! K // SPI1_CS2 ------------ GPIO1[0] -- 17/ R$ f3 q6 V; ~* V1 @) O
// SPI1_CS3 ------------ GPIO1[1] -- 18
. k$ K* i0 a$ s4 X( E+ K9 v
% {! `9 b1 g/ T1 h$ [$ ^, ]6 t1 [ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: I9 }' w) h+ a, W# r3 o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# J# Q+ R4 L/ F% d2 J3 f! j HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);& z n9 G; V0 l, b5 W* j
- z& i$ |# i3 p- N5 Z //DRDY: `4 D9 ]: W' D+ Y
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! w( ~+ m2 `# f
// CS2,CS3
, P# _* d9 ^/ X( u! ^+ q- u GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
/ Q4 E) K1 S7 F2 Q8 v GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: P! n) ^: ?* V //SIMO
1 L7 U# \, K' k( x- U GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
/ U3 s! m+ W2 P //SOMI
8 c# U: X d5 t# _7 n GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 ?% O* O) n, X# N //CLK
6 @ W/ t: L! x1 C+ F GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK( L2 k( ~5 v/ l5 W( ~
& W! v7 u* m& y6 I2 m // LDAC
8 H+ `. |% \- p N GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
2 K" h0 b* l9 i3 @. | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. r3 @: A. p" G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 V. l5 |+ @9 w1 c, a5 g* X GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" X$ j! o; e# Z+ L* ?. A, M+ w GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY- g/ t+ b2 A; Z7 i! L
}- B! }+ O0 H6 z J
+ h0 m( O. z$ Y, f! o5 N, x9 _int main(void)0 F9 o( U2 W- E4 m1 b/ g
{
5 ]) ? |7 ^' @7 Z) ], y, R // 外设使能
# v& o1 z. ~" M- Y# c PSCInit();; J+ j2 \# y2 z: s' L- C) N
: } z& C0 T# T, G! |2 o8 y
1 W n% }) ^4 Q& x
// 管脚复用配置$ [" K' c+ F- t9 n3 T, m" g N' P
GPIOBankPinMuxSet();8 I7 E0 f2 a0 u: e9 g3 N
for(;;)7 D) l! a- K9 q
{
5 J5 U& n, S }8 A4 H* r' ]; u SET_SCLK();//时钟正常输出& w% Q( N b0 f# ?# d$ q; [- E
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 @9 S5 h$ P. |% \1 V8 G9 c" g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3+ F- K8 o d1 \) w) j
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ _: \/ m/ z' N" }8 d
7 I: i" ?+ _0 ^ i B delay(20);0 j {9 ^7 A( [" e
CLR_SCLK();7 w/ \: F k1 C5 v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% _* ?3 G* g0 Z2 r6 O2 V! s, y# G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3' C) d; p! I% x* z3 i8 Q* j/ g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 F' M* l0 c. E/ m3 [, e4 q( [ delay(20);
4 L* E# Z# `6 W9 J }
* E% f3 M! H) N- T" ^}5 | k1 B+ K' A8 d- w# D5 n! U( d3 Z
|
|