|
|
使用下面的例子代码,不能使SIMO和CS为低电平:* L# c! c$ y1 ]1 p9 l
void PSCInit(void)- E. _1 l# U# k& r% p% q' D
{
, |. o$ Q9 a7 l/ t PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
' r- X2 k2 I1 C1 f9 `}
& |# m* I$ m% C: L' v9 R, z" e2 L
7 [4 `* V3 P$ T! X6 R6 ?! h8 I% ~9 Gvoid GPIOBankPinMuxSet(void)
) D, V g" p- Y& `{0 D* i: r( r) `9 X. z
// DRDY ------------ GPIO6[14] -- 1112 F" s! f: v% D' E$ u0 y# j$ f
// SPI1_CLK ------------ GPIO2[13] -- 46! g5 u( r1 }% Q) ^+ [
// SPI1_SOMI------------ GPIO2[11] -- 44
( W( s% y+ ^/ d* a Z$ L _ // SPI1_SIMO------------ GPIO2[10] -- 43% D' B( S x9 c) H' C, |% t
// SPI1_CS2 ------------ GPIO1[0] -- 17
* U* y6 @6 d- p7 c7 { // SPI1_CS3 ------------ GPIO1[1] -- 18
# g& C. q; o7 ?' z8 B" d, ?, p5 T# T, w% O1 N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
- j, [) x, Q$ X HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);" H2 L5 g4 X9 i2 }! m4 P, C1 h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
) M4 w* d3 x- m( {% K+ L) M+ K
% O0 p5 K9 E* G. E //DRDY; q4 x, z, m- _$ L- w; c
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! v& D& n8 i+ _$ p+ [# z1 A
// CS2,CS3" j. _/ Y& w6 q5 q
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 I, y2 z% g3 ^; b$ a! U1 k3 J
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
8 o& g$ t/ V& @- l. G1 L) W) B, j //SIMO
1 y# Q6 {3 L" ]# \# d GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO- I/ j5 j! `- x% f; W- `( ]
//SOMI& g/ L+ ?5 U! p5 u) R3 C* ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI: |, q) \$ U" D0 d. p1 Y
//CLK
* ?, x% f( B+ P! {7 t GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 G/ D6 }) ~* q; W6 t& p8 x
: r8 {2 ~8 S* d
// LDAC
9 T9 S3 t3 W9 K4 ~2 Y5 \3 `7 W GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 o6 e* j( y' J0 L3 P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ N3 P6 z! u0 _2 I) W7 i) ^6 K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" |3 r2 |! ^( m6 p5 `$ k
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 w4 O0 {+ C Y0 z+ j GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
' Q4 \2 s1 `( `+ T}& s; R, S$ f3 C/ y9 d E- l
, h* g( p+ m$ j; f3 M/ bint main(void)
/ O l( p# v2 u. K, J, z" d0 V! v{, Y) s# K" j6 S) L
// 外设使能
5 ^" R0 y! a) ?% V PSCInit();/ u$ _" g6 z4 S. L8 ~0 _
) K% |' M# H8 ]6 p9 B % K9 _5 S' V% a y
// 管脚复用配置
0 G7 Z: |# m7 B8 @6 s3 ?6 A GPIOBankPinMuxSet();
/ s& a9 E. }2 m8 E% |# q for(;;)3 A5 J0 e6 |. J
{
: e% N; m) T. X( ]/ N" | SET_SCLK();//时钟正常输出6 N; Y6 E: [* b. e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* ^& U5 \$ B, o) G# \+ A8 t5 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
4 Z6 f% l5 k% [* K) S( c2 v GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
/ f+ G6 a4 v- o9 S1 s& y
; ?# s J( M. v; O delay(20);
! ~9 f( G# y! [$ s! ?% Y CLR_SCLK();: o1 [) O& q4 ]' z, B7 o, E
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ G/ ~: Z# o" J I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS37 T- n; a7 ~( b9 G4 \) A+ e
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 U/ k4 o+ @5 s
delay(20);
8 K2 F. K" x4 G8 i7 ~( v# i }
1 ~0 Y- n/ n0 ]0 F- }0 f- k' X( l}6 q( L6 o) l& ?: }( ^, v
|
|