|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
, o& x6 s0 p6 e) g" J2 nvoid PSCInit(void): e. y! P; i' g( }3 Z5 p. q
{
) `$ e9 c; |% A PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);- F$ D1 G) ^( a5 l) f* |& G
}$ T# I& F$ q5 y4 g% l( E- x
9 X8 u+ l% d2 e% P
void GPIOBankPinMuxSet(void)
1 w2 \/ F3 [4 U6 Q{* m% _2 I- ~4 j4 g5 {) C
// DRDY ------------ GPIO6[14] -- 111* k3 ]! ?. O4 E
// SPI1_CLK ------------ GPIO2[13] -- 46; v0 |# l) E6 h
// SPI1_SOMI------------ GPIO2[11] -- 44
) c% a3 `0 c/ @$ t0 ` // SPI1_SIMO------------ GPIO2[10] -- 43, o( S3 A; _1 P5 ]
// SPI1_CS2 ------------ GPIO1[0] -- 17
0 D% I+ G, a" T8 a) O2 `8 J // SPI1_CS3 ------------ GPIO1[1] -- 18
7 |( K% p6 P, }7 v9 M2 N( Y& h4 G
: \0 }+ \1 r- N0 k, d# g8 w# o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
! Z7 J% u ~4 U( u& l HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( ^4 m6 M# B& e/ ^5 Z( f; c
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
' L7 O* A% T! b% L
4 M! g! } h' |( W9 F //DRDY' {2 Q6 U, N: I. r
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" k( X1 X6 ?; w0 d% \
// CS2,CS3
: Y$ o1 A/ r6 h$ L GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS29 q2 Q u, O$ X
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
% l( @6 F+ I7 C) i# R2 W/ Q. o //SIMO
$ n5 U( j: e; _' [0 [- s- ?4 w0 p GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO, {; x/ u" d* F1 `. z8 K; ?
//SOMI
0 I4 S3 M6 c8 f4 A% i; R0 V2 c4 o" I9 I GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI2 X) a5 I8 U' R, a
//CLK; f0 L# b9 L, `$ O# a) U% y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) v* B4 y) Q% Z q% M
5 Z5 C2 J8 w/ Q3 L# x
// LDAC/ Z% ]4 m& x: ?8 o7 n& a. H+ G2 @
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
! [( X( y/ x G+ W7 V3 p$ G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ f0 `7 J* B% S/ T$ B) {. V$ B" ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 v7 P; u- h: n! b9 y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 X) ^* s) M# Y8 |3 Y/ A GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ H8 G. _( W; K- P& \/ A9 t
}7 H, H! }0 ?+ m* ^: f6 L5 q
3 G# q) {( L+ l! e
int main(void)
+ A3 ~+ l9 v) d4 N% e{$ e" t/ K/ ]0 B1 V' m8 N
// 外设使能. \9 T0 [/ y/ w" \$ r
PSCInit();' l' Y+ A& z# m; {+ p
1 @5 O& c) ]$ A8 }$ D
* Q1 F3 W( L) x" M X9 _) r // 管脚复用配置
7 Q1 H; b; x, y$ x GPIOBankPinMuxSet();
$ ~5 Q- W% ]" N6 D% G4 f for(;;)5 `6 @2 D+ R' V5 \; j6 H
{2 J0 I" a6 H/ ]+ e# S& V
SET_SCLK();//时钟正常输出. Y) c" L( {+ R/ p# g' A; h( F! G7 d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 {# \$ Z/ y2 g x" Y! [; U3 C n3 l0 d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
% B9 `4 V H0 z. I+ j. K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- ^. V# s# k1 E+ d
9 p! w# d2 ]& L5 J/ V delay(20);
U" O; n g/ I% A1 `5 y CLR_SCLK();/ _$ Y) [$ b' P6 x z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 i+ C8 M( t. X) [" H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& X+ a- Z' G7 a" p0 l- B$ F GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
1 M! x! X: v8 y* ]8 E/ ~, @# f delay(20);
2 Q% g2 V- Y" k z2 T9 [( \, n }
h2 C/ Q! W4 s7 P5 o}
0 A9 R" p; t7 n& E4 T5 r" F |
|