|
使用下面的例子代码,不能使SIMO和CS为低电平:% g* B P9 ^7 B, H5 ?8 g
void PSCInit(void)& M7 E0 N$ v+ A( }
{! Y3 j2 D+ H' S, G$ A
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
7 j4 o O7 ]8 u: }8 w}
% n* D& p5 j/ I8 @ [2 p& z8 |; L
void GPIOBankPinMuxSet(void)
! m B$ @) g* N& `{
0 F, P$ p# y& s4 e+ R' \) y x // DRDY ------------ GPIO6[14] -- 111
5 ?- P/ f" T* T, @. V // SPI1_CLK ------------ GPIO2[13] -- 468 K9 _# u& ]4 v' W! d' q% G
// SPI1_SOMI------------ GPIO2[11] -- 44# M$ {) i1 a; |
// SPI1_SIMO------------ GPIO2[10] -- 43, D5 u+ m3 R2 I
// SPI1_CS2 ------------ GPIO1[0] -- 17
. N/ X- u- n: O // SPI1_CS3 ------------ GPIO1[1] -- 18
" P. s5 h4 d, B0 _) W: B% v9 L( C
: u) ^5 h& B$ I4 } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 p) U( U$ a6 u: I& Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 Y. w7 I$ f7 G. Y5 k, g$ E" i HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
& e! V( g) P9 `' Q: c* \1 H# g3 B
& K8 C/ Z8 I/ w0 j. E; Y# V9 w //DRDY7 ? D5 T T6 m* ]
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
k# y' k7 [3 B1 [" s! V4 L' A // CS2,CS3
/ M. \( i( e, y8 Y: q6 P3 R! M$ C GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
6 }4 {$ e! C4 _: t GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
. D# x- k0 R$ N m h //SIMO
. e" M9 P1 E7 L7 |2 X GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( c7 U& \( u; q M/ V" M7 |
//SOMI
9 U1 H3 t% N$ S( u3 _5 Y GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI0 \8 }0 h& b2 O% x3 a) k
//CLK6 s' p: y# U5 I
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK6 P$ S. n' \( E/ J' S0 @
+ P3 ]) A% X1 o1 D) z
// LDAC
+ E& H1 v- a9 a& t$ b% j GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 x; `; b8 k- V
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( W$ o. O0 P/ N$ |8 d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& N, `& _: L8 O, W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
w4 s' D8 }8 L* u* q GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; g# I$ E5 q: R% R}
& ~0 i$ b& ~- L+ S* v; G {( S+ ]/ k+ a2 O
int main(void)
7 t6 s4 ^! \$ U8 O{
1 T# S3 ~: \) p7 d- w2 P5 \$ [* p // 外设使能
0 E" y% l# [/ S& \5 n PSCInit();2 A4 k% e; t8 _$ u. o7 I
5 [' j& h0 A) `4 r$ a2 E" [
7 x! a3 m* |! P, \; q& `8 \+ m // 管脚复用配置
; d ^2 E; `: m( U' v- h8 i GPIOBankPinMuxSet();
8 s9 y S/ l0 G$ ]; ` for(;;)
- O! T) S6 b2 |# H {
6 b! q( s2 ~, j& g SET_SCLK();//时钟正常输出+ o8 @3 i) C% W/ v# K; L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 L l# f, W" y+ R* N$ D7 J& z- J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 V, P9 S- R/ p+ v' `! D$ Q
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN! F1 h2 u5 Y. x8 G8 f. U! a, Q& m
; @7 |4 M/ {; Q. W& I delay(20);
/ l/ z( _" s- M% L" i/ j CLR_SCLK();
1 c% c! ~+ |+ @# c+ ?9 T GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3- T/ V; a, A2 i" w. W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 P1 l7 x1 ?# R; F# T. n$ `& b2 Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 }9 Y. ]# _3 A+ j delay(20);( c; f" f& y* X) v
}
1 [& D, X+ o1 z6 k, R7 l' O$ k}5 ?& N }! Y3 t0 o* ?
|
|