|
|
使用下面的例子代码,不能使SIMO和CS为低电平:1 O' `1 p5 O4 U, z; Z
void PSCInit(void)
. R- C& \# Q4 n1 I% h* x% Y{
; Y+ M. Z8 x8 Q3 B0 J* c5 ?( ] PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);6 Q, _. B# f# L1 z
}6 u( |7 P! v# m `6 X! n' K" a
( B0 y" G4 V `, C! l: Z+ j5 |
void GPIOBankPinMuxSet(void)
6 H( L3 ?3 r/ e4 i! J) z2 L0 j{* ? l, S; `: \- D4 ]' a" Q7 N
// DRDY ------------ GPIO6[14] -- 111) \* O' c. c1 F3 v7 z2 {! ?# Z) a
// SPI1_CLK ------------ GPIO2[13] -- 46
* ^% [! m; O1 a- x+ S) ~; m // SPI1_SOMI------------ GPIO2[11] -- 44
, h8 l3 G: `. M+ V6 C' R // SPI1_SIMO------------ GPIO2[10] -- 43
- W' D7 C' i) ~8 J% O0 { // SPI1_CS2 ------------ GPIO1[0] -- 17/ o' i1 p- u3 G$ `9 H' n& o; l
// SPI1_CS3 ------------ GPIO1[1] -- 18! p! C4 W1 B+ U6 [! q
) r# K O1 N) h+ X4 I% ]0 }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- @- n$ d/ z9 [; m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ z- D6 H6 ~8 i HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ r3 l8 x. n0 b/ A6 j5 M
- z4 t O( s1 x: u1 F) Z: L
//DRDY% u2 K; F: _( w, Y/ D b) N
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
8 Q5 H) n5 l- M$ ?. f // CS2,CS3
2 b4 V2 y, Q1 g' f) @* c! | GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
6 w4 r; e! \: `+ V1 F GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
7 I! ^8 S: y: l4 i //SIMO. C* b6 a4 [* e8 N3 o! F
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
4 _7 c% P- B1 k9 i$ s //SOMI* }0 S. V$ b8 ], E" \
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ h5 S6 v3 }% i" O: T7 x
//CLK) ?& K! z& j5 b8 ~' U& ^- ?
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK, g ?7 o$ O: R
1 r" w4 o& Z3 l! R9 s4 L // LDAC
' P2 q. q. t! f/ w& z GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
6 F! Q6 r/ G2 J+ P4 N2 y* K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ ~& S6 |/ A# K! y& H! Q/ x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) J4 i4 S- {0 p& W, C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3' ?2 l3 o3 N- @/ G
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
E# X' }* g* e8 {/ U4 E( \}. f3 v# S- ~- O6 F
' R" j3 f a( A5 O0 H7 ^: Qint main(void)
3 N& }) F( { b& r; f1 ]$ s' \{0 `( g. H8 b* {6 g$ G: ^
// 外设使能
/ n, `' z1 n# o9 s3 Z/ b PSCInit();
$ Z- y* ]3 z! N+ L# d3 h
( [ u/ \) m9 w* W I
. F" }- X; s7 k // 管脚复用配置+ P- z" J& [8 Q% x2 n4 D' g
GPIOBankPinMuxSet();2 _4 R7 P: n! p# s. p; h
for(;;)
: H9 h; y9 w7 r( A7 y. z {5 \5 F) P$ J" V8 d
SET_SCLK();//时钟正常输出
6 l& {4 O. U4 y2 X. j& \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; z6 f$ t$ ~* D1 e h& r GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
8 S! w& @0 y; O+ l( M0 U, r2 @9 J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
% l/ X, A' m+ ]# T5 U7 k7 Q2 d+ k9 ?
delay(20);0 p, W$ t- u" o) i3 d9 ~! o
CLR_SCLK(); C) b/ |& y3 H; p, f1 t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% W Y$ d6 `1 {- y* Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3+ A9 {3 l+ k: F r8 M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 j4 N( W8 ^3 O
delay(20);
& I1 Y' a% W) B) c$ N+ ^& ] ` R }
" S5 q0 w- i' U8 I5 ~4 z% _, m}9 n( p! X8 m M; r2 a; P
|
|